SQL Server có một loạt các hàm trả về ngày / giờ hiện tại. Hai trong số này là GETDATE()
và SYSDATETIME()
các chức năng.
Thoạt nhìn, hai hàm này có vẻ hoạt động giống nhau - lấy ngày và giờ hiện tại từ hệ điều hành của máy tính mà phiên bản SQL Server đang chạy.
Tuy nhiên, có một sự khác biệt nhỏ giữa hai điều này.
Sự khác biệt? Loại giá trị trả lại
Sự khác biệt chính giữa GETDATE()
và SYSDATETIME()
thuộc loại giá trị trả về.
-
GETDATE()
trả về ngày giờ giá trị. -
SYSDATETIME()
trả về datetime2 (7) giá trị.
Điều này có nghĩa là SYSDATETIME()
có độ chính xác phân số giây nhiều hơn GETDATE()
.
Cả hai hàm đều lấy ngày và giờ hiện tại từ hệ điều hành của máy tính mà phiên bản SQL Server đang chạy, nhưng độ chính xác phân số là khác nhau.
Ví dụ
Dưới đây là một ví dụ để chứng minh các giá trị khác nhau được trả về cho mỗi hàm:
SELECT GETDATE() AS GETDATE, SYSDATETIME() AS SYSDATETIME;
Kết quả:
+-------------------------+-----------------------------+ | GETDATE | SYSDATETIME | |-------------------------+-----------------------------| | 2018-06-13 02:48:27.653 | 2018-06-13 02:48:27.6542371 | +-------------------------+-----------------------------+
Vì vậy, như đã đề cập, SYSDATETIME()
, trả về datetime2 (7) giá trị, có độ chính xác phân số lớn hơn GETDATE()
, trả về ngày giờ giá trị.
datetime2 loại dữ liệu cũng có phạm vi ngày lớn hơn và độ chính xác tùy chọn do người dùng chỉ định.
Tôi nên sử dụng cái nào?
Microsoft khuyến nghị chúng tôi sử dụng datetime2 với các giá trị ngày / giờ của chúng tôi. Kiểu dữ liệu này phù hợp với tiêu chuẩn SQL và dễ di động hơn datetime .
Do đó, hãy sử dụng SYSDATETIME()
trừ khi bạn có lý do để không.