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

Thêm phần chênh lệch múi giờ vào giá trị datetime2 trong SQL Server (T-SQL)

Trong SQL Server, TODATETIMEOFFSET() hàm được thiết kế đặc biệt để trả về datetimeoffset giá trị từ một datetime2 giá trị.

Thực tế là datetime2 loại dữ liệu không thực sự hỗ trợ lệch múi giờ và datetimeoffset phải chứa phần bù, TODATETIMEOFFSET() chức năng này cho phép bạn chỉ định một khoảng thời gian chênh lệch múi giờ để sử dụng.

Bài viết này cung cấp một số ví dụ để chứng minh.

Cách sử dụng cơ bản

Dưới đây là một ví dụ về cách sử dụng điển hình của TODATETIMEOFFSET() hàm số.

DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];

Kết quả (sử dụng đầu ra dọc):

datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00

Trong trường hợp này, tôi trả lại datetime2 ban đầu giá trị và kết quả datetimeoffset giá trị.

Kết quả là ngày / giờ ban đầu giống nhau, ngoại trừ phần chênh lệch múi giờ cụ thể đã được thêm vào.

Phạm vi là +14 đến -14 (tính theo giờ). Biểu thức được diễn giải theo giờ địa phương cho múi giờ được chỉ định.

Chỉ định Chênh lệch múi giờ tính bằng phút

Ngoài ra, bạn có thể chỉ định chênh lệch múi giờ theo phút. Đây là một ví dụ.

DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];

Kết quả (sử dụng đầu ra dọc):

datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00

Trong trường hợp này, tôi đã chỉ định +120 phút, tương đương với hai giờ. Vì vậy, kết quả là chênh lệch múi giờ là +02:00 (nghĩa là cộng thêm hai giờ).

Cũng lưu ý rằng khi bạn cung cấp độ lệch múi giờ tính bằng phút, bạn cung cấp nó dưới dạng giá trị số nguyên. Mặt khác, khi bạn cung cấp nó theo giờ, bạn cần chỉ định nó dưới dạng một chuỗi.

Xem Chuyển đổi một ngày sang một múi giờ khác để biết các ví dụ về cách thực hiện việc nà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. LEFT () so với SUBSTRING () trong SQL Server:Sự khác biệt là gì?

  2. Triển khai chỉ báo hiệu suất máy chủ SQL cho các truy vấn, thủ tục được lưu trữ và trình kích hoạt

  3. 5 sự thật hàng đầu để tìm và thay thế văn bản SQL trong SQL Server bằng hàm REPLACE

  4. Làm cách nào để tôi có thể lên lịch công việc để chạy truy vấn SQL hàng ngày?

  5. Cách lấy OBJECT_NAME () từ Cơ sở dữ liệu khác trong SQL Server