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.

SQL ServerKiểu dữ liệu trong SQL Server
Bài Viết Liên Quan:
GUID trong SQL Server
Trung Nguyen 12/03/2022
GUID trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.

Kiểu dữ liệu TIME trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu TIME trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.

Kiểu dữ liệu DATE trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATE 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 DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.

Kiểu dữ liệu DATETIME2 trong SQL Server
Trung Nguyen 11/03/2022
Kiểu dữ liệu DATETIME2 trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng DATETIME2 trong SQL Server để lưu trữ cả dữ liệu ngày và giờ trong một bảng.