Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chuyển đổi ‘datetime’ thành ‘smalldatetime’ trong SQL Server (Ví dụ T-SQL)

Bài viết này chứa các ví dụ về chuyển đổi ngày giờ giá trị thành smalldatetime giá trị trong SQL Server.

Một trong những lợi ích của việc chuyển đổi ngày giờ giá trị thành smalldatetime là bạn giảm dung lượng lưu trữ từ 8 byte xuống 4 byte. Tuy nhiên, bạn sẽ mất độ chính xác khi làm như vậy.

Ngày giờ kiểu dữ liệu bao gồm phần giây phân số 3 chữ số. Độ chính xác của nó được làm tròn đến gia số .000, .003 hoặc .007 giây.

smalldatetime Mặt khác, kiểu dữ liệu không có bất kỳ phần giây nào và thành phần giây của nó luôn được đặt thành 0 (:00). Ngoài ra, nó chỉ có độ chính xác đến từng phút gần nhất.

Khi bạn chuyển đổi ngày giờ giá trị thành smalldatetime , ngày và một phần của phần thời gian được sao chép. Thành phần giây được đặt thành 0 (bất kể giá trị gốc) và thời gian được làm tròn đến phút gần nhất. Mọi giây phân số đều bị xóa.

Ví dụ 1 - Chuyển đổi ngầm định

Dưới đây là một ví dụ về chuyển đổi ngầm định giữa ngày giờ smalldatetime .

DECLARE 
  @thedatetime datetime, 
  @thesmalldatetime smalldatetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thesmalldatetime = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thesmalldatetime AS 'smalldatetime';

Kết quả:

+-------------------------+---------------------+
| datetime                | smalldatetime       |
|-------------------------+---------------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 10:16:00 |
+-------------------------+---------------------+

Đây là một chuyển đổi ngầm định bởi vì chúng tôi không sử dụng một hàm chuyển đổi (như những hàm bên dưới) để chuyển đổi nó một cách rõ ràng. Trong trường hợp này, SQL Server thực hiện một chuyển đổi ẩn đằng sau hậu trường khi chúng tôi cố gắng chỉ định datetime giá trị thành smalldatetime biến.

Trong ví dụ này, chúng ta có thể thấy rằng smalldatetime giá trị không bao gồm giây phân số, giây đã được đặt thành 0 và phút đã được làm tròn.

Ví dụ 2 - Chuyển đổi rõ ràng bằng CAST ()

Dưới đây là một ví dụ về chuyển đổi rõ ràng. Trong trường hợp này, tôi sử dụng CAST() hoạt động trực tiếp trong SELECT tuyên bố để chuyển đổi rõ ràng giữa datetime smalldatetime .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.125';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS smalldatetime) AS 'smalldatetime';

Kết quả:

+-------------------------+---------------------+
| datetime                | smalldatetime       |
|-------------------------+---------------------|
| 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 |
+-------------------------+---------------------+

Bạn có thể nhận thấy rằng trong ví dụ này, tôi đã thay đổi giây phân số khi gán giá trị ban đầu cho @thedatetime . Nhưng vì tôi đang gán nó vào ngày giờ kiểu dữ liệu, phần giây phân số được làm tròn lên (vì độ chính xác của nó được làm tròn đến các gia số .000, .003 hoặc .007 giây). Trong trường hợp này, tôi cố gắng gán một số giây phân số của 125 nhưng nó được làm tròn thành 127 .

Tuy nhiên, điều này không ảnh hưởng đến smalldatetime giá trị.

Ví dụ 3 - Chuyển đổi rõ ràng bằng CONVERT ()

Dưới đây là một ví dụ về chuyển đổi rõ ràng bằng cách sử dụng CONVERT() hàm thay vì CAST() .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.125';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(smalldatetime, @thedatetime) AS 'smalldatetime';

Kết quả:

+-------------------------+---------------------+
| datetime                | smalldatetime       |
|-------------------------+---------------------|
| 2025-05-21 10:15:30.127 | 2025-05-21 10:16:00 |
+-------------------------+---------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp kết nối trong .NET / SQL Server?

  2. Cách sử dụng OBJECT_ID () trên các đối tượng cơ sở dữ liệu chéo trong SQL Server

  3. Chạy tất cả các tệp SQL trong một thư mục

  4. Chuyển đổi thời gian thập phân thành giờ và phút

  5. Chuyển đổi ‘smalldatetime’ thành ‘datetime’ trong SQL Server (Ví dụ T-SQL)