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

TODATETIMEOFFSET () Ví dụ trong SQL Server

Trong SQL Server, bạn có thể sử dụng TODATETIMEOFFSET() hàm để trả về bộ datetimeoffset giá trị được dịch từ datetime2 biểu hiện. Nó chấp nhận hai đối số; ngày và mức chênh lệch mà bạn muốn áp dụng cho ngày đó.

Dưới đây là các ví dụ về cách sử dụng.

Cú pháp

Cú pháp của TODATETIMEOFFSET() như sau:

TODATETIMEOFFSET ( expression , time_zone )

Ở đâu expression là một biểu thức phân giải thành datetime2 giá trị và time_zone là múi giờ bạn muốn áp dụng cho biểu thức đó (ngày).

Bạn có thể cung cấp múi giờ theo phút hoặc giờ. Nếu bạn cung cấp nó trong vài phút, hãy sử dụng một số nguyên (ví dụ:-120 ), nếu không, để cung cấp nó trong giờ, hãy sử dụng một chuỗi (ví dụ:'+04.00' ). Phạm vi cho múi giờ là +14 đến -14 (giờ).

Ngoài ra, ngày bạn cung cấp được diễn giải theo giờ địa phương cho múi giờ được chỉ định.

Ví dụ 1

Dưới đây là một ví dụ cơ bản về cách sử dụng:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;

Kết quả:

Result
----------------------------------
2112-01-01 00:00:00.0000000 +08:00

Ví dụ 2 - Giá trị âm

Điều này giống với ví dụ trước, ngoại trừ việc tôi sử dụng giá trị âm để thay thế:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;

Kết quả:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -08:00

Ví dụ 3 - Sử dụng biến datetime2

Trong ví dụ này, tôi đặt một biến rõ ràng bằng datetime2 giá trị, sau đó áp dụng TODATETIMEOFFSET() với giá trị đó và so sánh các giá trị:

DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Kết quả:

Original Date               +08:00
--------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00

Như chúng ta có thể thấy với ví dụ này (và những ví dụ trước đó), giá trị ngày ban đầu không có bất kỳ ngày giờ nào thông tin bù đắp (vì đó là datetime2 value), nhưng khi chúng tôi chạy nó qua TODATETIMEOFFSET() , chúng tôi kết thúc với một bộ datetimeoffset kiểu dữ liệu.

Ví dụ 4 - Sử dụng biến datetimeoffset

Điều này tương tự với ví dụ trước, ngoại trừ ngày ban đầu được đặt là datetimeoffset giá trị:

DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Kết quả:

Original Date                      +08:00
---------------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00

Ví dụ 5 - Sử dụng Ngày / Giờ Hiện tại

Trong ví dụ này, tôi nhập SYSDATETIMEOFFSET() chức năng như biểu thức ngày tháng. Hàm này tạo ngày / giờ hiện tại của máy tính đang chạy phiên bản SQL Server:

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';

Kết quả:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00

Ví dụ 6 - Cung cấp Chênh lệch múi giờ dưới dạng số nguyên

Như đã đề cập, bạn cũng có thể cung cấp độ lệch múi giờ dưới dạng số nguyên thay vì chuỗi:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;

Kết quả:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -03:00


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng IDENT_CURRENT () để trả lại giá trị nhận dạng hiện tại trên cột nhận dạng trong SQL Server

  2. Lưu trữ hình ảnh trong SQL Server?

  3. Cách di chuyển tệp dữ liệu trong SQL Server - Phần 1

  4. Các biến phân biệt chữ hoa chữ thường trong SQL Server

  5. Cách nối văn bản từ nhiều hàng thành một chuỗi văn bản trong SQL Server