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

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

Bài viết này chứa các ví dụ về chuyển đổi datetime2 giá trị của một ngày giá trị trong SQL Server.

Khi bạn chuyển đổi datetime2 giá trị của một ngày kiểu dữ liệu, bạn sẽ mất phần thời gian. Tuy nhiên, bạn cũng giảm kích thước lưu trữ từ 7 đến 9 byte xuống 3 byte. Trong mọi trường hợp, bạn sẽ chỉ thực hiện chuyển đổi này nếu bạn không cần phần thời gian.

datetime2 kiểu dữ liệu bao gồm ngày và giờ với phần giây phân số từ 0 đến 7 (điều này phụ thuộc vào số giây phân số được gán cho nó). Độ chính xác của nó là 100 nano giây.

Ngày Mặt khác, loại dữ liệu không bao gồm thời gian và có độ chính xác là 1 ngày.

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

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

DECLARE 
  @thedatetime2 datetime2, 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Kết quả:

+-----------------------------+------------+
| datetime2                   | date       |
|-----------------------------+------------|
| 2025-05-21 10:15:30.1234567 | 2025-05-21 |
+-----------------------------+------------+

Đây là một chuyển đổi ngầm định vì chúng tôi không sử dụng một chức năng chuyển đổi (như những chức năng 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 gán datetime2 giá trị của một ngày biến.

Ở đây, chúng ta có thể thấy rằng ngày giá trị chỉ bao gồm ngày (không có thành phần thời gian).

Trong ví dụ này, datetime2 giá trị sử dụng độ chính xác mặc định (dẫn đến 7 chữ số thập phân). Điều này có thể được giảm xuống bất kỳ số nào và kết quả chuyển đổi sẽ giống nhau.

DECLARE 
  @thedatetime2 datetime2(0), 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Kết quả:

+---------------------+------------+
| datetime2           | date       |
|---------------------+------------|
| 2025-05-21 10:15:30 | 2025-05-21 |
+---------------------+------------+

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 datetime2 ngày .

DECLARE @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CAST(@thedatetime2 AS date) AS 'date'; 

Kết quả:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+

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 @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CONVERT(date, @thedatetime2) AS 'date'; 

Kết quả:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu byte [] vào cơ sở dữ liệu SQL Server từ C #

  2. Cách chèn một chuỗi vào một chuỗi khác trong SQL Server bằng cách sử dụng STUFF ()

  3. Tại sao KHÔNG NULL trả về giá trị NULL cho Varchar (tối đa) trong SQL Server?

  4. Chênh lệch thời gian SQL giữa hai ngày dẫn đến hh:mm:ss

  5. Tạo một dạng xem liên kết lược đồ trong SQL Server