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

Lấy múi giờ hiện tại của máy chủ trong SQL Server (T-SQL)

Microsoft đã giới thiệu CURRENT_TIMEZONE() trong SQL Server 2019 để trả về múi giờ của máy chủ.

Cụ thể hơn, hàm này “trả về tên của múi giờ được quan sát bởi một máy chủ hoặc một phiên bản”.

Ví dụ

Đây là một ví dụ để chứng minh.

SELECT CURRENT_TIMEZONE();

Kết quả:

(UTC) Coordinated Universal Time

Trong trường hợp này, múi giờ của phiên bản SQL Server của tôi là UTC.

Tôi có thể thấy điều này khi chạy các hàm như SYSDATETIMEOFFSET() .

SELECT SYSDATETIMEOFFSET();

Kết quả:

2020-04-01 00:14:44.0470785 +00:00

UTC có chênh lệch múi giờ là +00:00 (không chênh lệch) và điều này được phản ánh khi tôi trả lại ngày và giờ của hệ thống.

Các phiên bản trước của SQL Server

Nếu tôi chạy CURRENT_TIMEZONE() so với phiên bản SQL Server 2017 của tôi, đây là những gì tôi nhận được.

SELECT CURRENT_TIMEZONE();

Kết quả:

Msg 195, Level 15, State 10, Line 1
'CURRENT_TIMEZONE' is not a recognized built-in function name.

Tôi thậm chí đã tải xuống vùng chứa Docker mới nhất với SQL Server 2017 cho Linux để kiểm tra điều này, nhưng tôi vẫn gặp lỗi này.

Tôi cũng đã kiểm tra các bản cài đặt SQL Server 2017 khác nhưng với kết quả tương tự.

Trong phần nhận xét của tài liệu trực tuyến cho chức năng này, Microsoft đã nói bóng gió rằng CURRENT_TIMEZONE() sẽ được chuyển sang các phiên bản SQL Server cũ hơn, nhưng điều này dường như chưa xảy ra khi viết bài này.

Trong thời gian chờ đợi, bạn có thể thử mã sau.

DECLARE @TimeZone VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeZone OUT
SELECT @TimeZone

Kết quả:

UTC

Tôi đã chạy điều đó trên cùng một phiên bản SQL Server 2017 không hỗ trợ CURRENT_TIMEZONE() và nó hoạt động tốt.

Rõ ràng, kết quả của bạn sẽ phụ thuộc vào vị trí đặt máy chủ của bạn (hoặc ít nhất, múi giờ mà nó đã được định cấu hình). Đây là những gì tôi nhận được nếu tôi chạy câu lệnh này trên một máy chủ khác:

W. Europe Standard Time

SQL Server cũng có chế độ xem hệ thống cho phép bạn trả về danh sách các múi giờ được hỗ trợ mà bạn có thể sử dụng để kiểm tra chéo kết quả của mình tại đây.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận giá trị tối đa từ các hàng và tham gia vào một bảng khác

  2. Cập nhật SQL với cách đánh số liên tiếp

  3. Cách nhanh nhất để cập nhật 120 triệu bản ghi

  4. Tìm kiếm “đối sánh toàn bộ từ” với mẫu LIKE của Máy chủ SQL

  5. Câu lệnh select lồng nhau trong SQL Server