KingbaseES 提供兩種存儲時間戳的數據類型: 不帶時區的 TIMESTAMP 和帶時區的 TIMESTAMPTZ。
- TIMESTAMP 數據類型可以同時存儲日期和時間,但它不存儲時區。這意味着,當修改了數據庫服務器所在的時區時,它里面存儲的值不會改變。
- TIMESTAMPTZ 數據類型在存儲日期和時間的同時還能正確處理時區。在向 TIMESTAMPTZ 字段插入值的時候,KES 默認認為時間是當前時區。當插入的數據是非當前時區時,KES 會把存儲在其中的值轉換成數據庫服務器 TIMEZONE 參數所在的時區。
TIMESTAMP 和 TIMESTAMPTZ 都使用8字節存儲空間。例子如下:
INSERT INTO tz_test(ts, tstz) VALUES('2016-06-22 19:10:25', '2016-06-22 19:10:25' ); INSERT INTO tz_test(ts, tstz) VALUES(sysdate, sysdate ); INSERT INTO tz_test(ts, tstz) VALUES('2016-06-22 19:10:25-07', '2016-06-22 19:10:25-07' ); test=# select * from tz_test; ts | tstz ---------------------+------------------------ 2016-06-22 19:10:25 | 2016-06-22 19:10:25+08 2021-01-06 21:31:04 | 2021-01-06 21:31:04+08 2016-06-22 19:10:25 | 2016-06-23 10:10:25+08 test=# show timezone; TimeZone --------------- Asia/Shanghai