Kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.

Giới thiệu về kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Kiểu dữ liệu DATETIMEOFFSET trong SQL Server cho phép bạn thao tác bất kỳ thời điểm nào, đó là một giá trị ngày giờ, cùng với một khoảng chênh lệch chỉ định ngày giờ đó khác UTC bao nhiêu.

Cú pháp kiểu dữ liệu DATETIMEOFFSET

Cú pháp của kiểu dữ liệu DATETIMEOFFSET như sau:

DATETIMEOFFSET [ (fractional seconds precision) ]

Để khai báo một biến kiểu DATETIMEOFFSET, bạn sử dụng cú pháp sau:

DECLARE @dt DATETIMEOFFSET(7)

Để tạo cột bảng có kiểu dữ liệu DATETIMEOFFSET, bạn sử dụng biểu mẫu sau:

CREATE TABLE table_name (
    ...,
    column_name DATETIMEOFFSET(7)
    ...
);

Kiểu dữ liệu DATETIMEOFFSET có phạm vi từ ngày 1 tháng 1 năm 1 CN đến ngày 31 tháng 12 năm 9999 CN. Khoảng thời gian từ 00:00:00 thông qua 23:59:59.9999999.

Định dạng

Các định dạng của DATETIMEOFFSET như sau:

YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm]

Ví dụ:

2020-12-12 11:30:30.12345 

hoặc theo ISO

YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z

Ví dụ:

2020-12-12 19:30:30.12345Z.

Chênh lệch múi giờ

Đối với giá trị ngày giờ hoặc thời gian, độ lệch múi giờ chỉ định độ lệch múi giờ từ UTC. Độ lệch múi giờ được biểu thị là [+ | -] hh:mm:

  • hh là hai chữ số nằm trong khoảng từ 00 đến 14, đại diện cho số giờ trong độ lệch múi giờ.
  • mm là hai chữ số nằm trong khoảng từ 00 đến 59, đại diện cho số phút bổ sung trong độ lệch múi giờ.
  • + (cộng) hoặc – (trừ) chỉ định xem chênh lệch múi giờ được thêm vào hay bị trừ khỏi giờ UTC để trả về giờ địa phương.

Phạm vi hợp lệ của độ lệch múi giờ là -14:00 đến +14:00

Ví dụ về kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Đầu tiên, hãy tạo một bảng có tên messages, có một cột kiểu DATETIMEOFFSET:

CREATE TABLE messages(
    id         INT PRIMARY KEY IDENTITY, 
    message    VARCHAR(255) NOT NULL, 
    created_at DATETIMEOFFSET NOT NULL
);

Thứ hai, INSERT một hàng mới có giá trị kiểu DATETIMEOFFSET vào bảng messages:

INSERT INTO messages(message,created_at)
VALUES('DATETIMEOFFSET demo', CAST('2019-02-28 01:45:00.0000000 -08:00' AS DATETIMEOFFSET));

Thứ ba, truy vấn dữ liệu từ bảng messages và sử dụng AT TIME ZONE để chuyển đổi giá trị kiểu DATETIMEOFFSET được lưu trữ sang múi giờ 'SE Asia Standard Time'.

SELECT 
    id, 
    message, 
	created_at 
        AS 'Pacific Standard Time'
    created_at AT TIME ZONE 'SE Asia Standard Time' 
        AS 'SE Asia Standard Time',
FROM 
    messages;

Đây là kết quả:

Ví dụ về kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Trong hướng dẫn này, bạn đã học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác giá trị kiểu DATETIMEOFFSET.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *