Bài viết này chứa các ví dụ về chuyển đổi ngày giờ giá trị của một ngày tháng giá trị trong SQL Server.
Hệ quả rõ ràng của việc chuyển đổi ngày giờ giá trị đến ngày là bạn mất phần thời gian. Tuy nhiên, một lợi ích là bạn giảm kích thước lưu trữ từ 8 byte xuống 3 byte. Dù bằng cách nào, 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.
Ngày giờ kiểu dữ liệu bao gồm ngày và giờ, với 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.
Tuy nhiên, ngày loại dữ liệu có độ chính xác là 1 ngày (và nó không bao gồm thời gian, như đã đề cập).
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ờ và ngày .
DECLARE @thedatetime datetime, @thedate date; SET @thedatetime = '2025-05-21 10:15:30.123'; SET @thedate = @thedatetime; SELECT @thedatetime AS 'datetime', @thedate AS 'date';
Kết quả:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+
Đâ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ị của một ngày tháng biến.
Trong ví dụ 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).
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 và ngày .
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CAST(@thedatetime AS date) AS 'date';
Kết quả:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 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 @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CONVERT(date, @thedatetime) AS 'date';
Kết quả:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+