Vấn đề:
Bạn muốn nhận ngày và giờ hiện tại trong T-SQL, nhưng bạn không muốn chênh lệch múi giờ.
Giải pháp:
Chúng tôi sẽ sử dụng GETDATE (), CURRENT_TIMESTAMP và SYSDATETIME () để lấy ngày và giờ hiện tại mà không có chênh lệch múi giờ. Hai chức năng đầu tiên cho phép chúng ta lấy thời gian hiện tại với độ chính xác thấp hơn. (GETDATE () là một hàm T-SQL, trong khi CURRENT_TIMESTAMP là một hàm Chuẩn SQL; cả hai hàm đều trả về cùng một kiểu dữ liệu). Hàm thứ ba, SYSDATETIME (), có thời gian chính xác cao hơn.
SELECT CURRENT_TIMESTAMP ;
Đây là kết quả của truy vấn:
2019-08-14 10:01:06.983
Thảo luận:
Trong cơ sở dữ liệu SQL Server, CURRENT_TIMESTAMP
hàm trả về ngày và giờ hiện tại (tức là thời gian trên máy mà phiên bản SQL Server đó chạy) dưới dạng datetime
loại dữ liệu. Datetime
là thời gian có độ chính xác thấp hơn có tối đa ba giây phân số. (Trong ví dụ của chúng tôi, đây là 983.)
GETDATE () tương tự như CURRENT_TIMESTAMP
và trả về cùng một kết quả. Sự khác biệt là CURRENT_TIMESTAMP
là tiêu chuẩn SQL, trong khi GETDATE () dành riêng cho SQL Server.
SELECT GETDATE() ;
Tất nhiên, nếu bạn muốn nhận ngày và giờ hiện tại có độ chính xác cao hơn mà không có chênh lệch múi giờ, bạn có thể sử dụng hàm SYSDATETIME (). Hàm này trả về một datetime2
kiểu dữ liệu với bảy giây phân số. Hãy xem ví dụ dưới đây:
SELECT SYSDATETIME() ;
Đây là kết quả:
2019-08-14 10:01:06.9754163