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ả:
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
.