日期時間類型是業務系統最常用也最易出錯的類型。SQL-92 定義三大核心類型,時區處理是跨地域應用的核心難點。
| 類型 | 組成 | 格式/長度 | 時區感知 |
|---|---|---|---|
DATE | 年、月、日 | YYYY-MM-DD (10字符) | 無 |
TIME(p) | 時、分、秒[.小數秒] | hh:mm:ss[.p] (8+p字符) | 無 (隱含服務器時區) |
TIMESTAMP(p) | 日期+時間[.小數秒] | YYYY-MM-DD hh:mm:ss[.p] (19+p字符) | 無 |
TIME(p) WITH TIME ZONE | 時間+時區偏移 | hh:mm:ss[.p]+hh:mm (14+p+1字符) | 有 (偏移範圍 -12:59~+13:00) |
TIMESTAMP(p) WITH TIME ZONE | 日期時間+時區偏移 | 類上 | 有 |
00:00:00 為格林威治午夜,服務器時區隱含WITH TIME ZONE 類型存儲偏移量,不存儲具體時區名(無夏令時感知)DATETIME (3.33ms 精度) / SMALLDATETIME (分鐘精度) — 老類型DATE, TIME, DATETIME2 (100ns 精度), DATETIMEOFFSET (含時區) — 2008+ 推薦新類型GETDATE() 返回服務器時間;SYSUTCDATETIME() 返回 UTC 高精度時間AT TIME ZONE (2016+) 實現時區轉換DATETIME2 或 DATETIMEOFFSET)