先上结论
不同
- timestamp without time zone:
插入时将时间字符串作为零时区的时间转为时间戳并存入
查询时将时间戳转为零时区的时间字符串 - timestamp with time zone:
插入时将时间字符串作为数据库时区的时间转为时间戳并存入
查询时将时间戳转为数据库时区的时间字符串
相同
- 在数据库内部都是以一个不变的时间戳数字存储的, 不论数据库的时区如何变化, 存储的值不会发生改变.
验证(举例说明)
// 准备
CREATE TABLE IF NOT EXISTS public.test_timezone
(
aaa timestamp(6) without time zone,
bbb timestamp with time zone
)
set timezone='Asia/Shanghai';
show timezone; // Asia/Shanghai
// 插入数据
insert into test_timezone values('2021-11-01 00:00:00', '2021-11-01 00:00:00'