Bài viết này chứa các ví dụ về chuyển đổi smalldatetime giá trị của một ngày giá trị trong SQL Server.
Một trong những lợi ích của việc chuyển đổi smalldatetime giá trị đến ngày là bạn giảm dung lượng lưu trữ từ 4 byte xuống 3 byte. Tuy nhiên, bạn mất thành phần thời gian khỏi giá trị, vì vậy bạn sẽ chỉ thực hiện chuyển đổi này nếu bạn không cần thời gian.
smalldatetime nhập dữ liệu cả ngày và giờ. Thành phần giây của nó luôn được đặt thành 0 (:00) và nó không có bất kỳ giây phân số nào. Độ chính xác của nó chính xác đến từng phút. Kích thước lưu trữ của nó là 4 byte.
Ngày mặt khác, kiểu dữ liệu chỉ bao gồm ngày tháng. Độ chính xác của nó là đến ngày gần nhất. Kích thước bộ nhớ của nó là 3 byte.
Vì vậy, để rõ ràng, khi bạn chuyển đổi smalldatetime giá trị đến ngày , năm, tháng và ngày được sao chép. Thời gian không được sao chép.
Ví dụ 1 - Chuyển đổi ngầm định
Dưới đây là ví dụ về chuyển đổi ngầm định giữa smalldatetime và ngày .
DECLARE @thesmalldatetime smalldatetime, @thedate date; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedate = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedate AS 'thedate';
Kết quả:
+---------------------+------------+ | smalldatetime | thedate | |---------------------+------------| | 2025-05-21 10:16:00 | 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 smalldatetime giá trị của một ngày biến.
Trong ví dụ này, chúng ta có thể thấy rằng phần ngày của smalldatetime giá trị được sao chép vào ngày giá trị và thời gian không được sao chép.
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
câu lệnh để chuyển đổi rõ ràng giữa smalldatetime và ngày .
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS date) AS 'date';
Kết quả:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 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 @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(date, @thesmalldatetime) AS 'date';
Kết quả:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+