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ờ.
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 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
.
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.
Đố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ờ.Phạm vi hợp lệ của độ lệch múi giờ là -14:00 đến +14:00
Đầ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
.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
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.
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.
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.
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.