PostgreSQL timestamp 与 timestamptz 区别
PostgreSQL Java About 1,437 words相同点
- 都占用
8
字节。 - 存储时没有本质区别,都不携带时区信息。
不同点
insert returning
和select
时返回给客户端数据时不同。insert
时timestamp
会直接保存不做转换;timestamptz
会转换成当前数据库设置的时区,进行转换,再保存进数据库。select
时timestamp
会直接读取不做转换返回;timestamptz
会转换成当前数据库设置的时区或者客户端session
设置的时区,进行转换,返回给客户端。
备注
Java
中映射关系
timestamp
对应:LocalDateTime
timestamptz
对应:OffsetDateTime
演示
create table timestamp_test(t1 timestamp, t2 timestamptz);
insert into timestamp_test values(current_timestamp, current_timestamp);
查看数据
lite_note=# select * from timestamp_test ;
t1 | t2
----------------------------+-------------------------------
2023-10-29 16:59:39.211676 | 2023-10-29 16:59:39.211676+08
(1 row)
查看时区
show timezone;
输出
lite_note=# show timezone;
TimeZone
---------------
Asia/Shanghai
(1 row)
设置数据
set timezone=utc;
再次查看数据
lite_note=# select * from timestamp_test ;
t1 | t2
----------------------------+-------------------------------
2023-10-29 16:59:39.211676 | 2023-10-29 08:59:39.211676+00
(1 row)
再次插入一条数据
lite_note=# insert into timestamp_test values(current_timestamp, current_timestamp);
INSERT 0 1
lite_note=# select * from timestamp_test ;
t1 | t2
----------------------------+-------------------------------
2023-10-29 16:59:39.211676 | 2023-10-29 08:59:39.211676+00
2023-10-29 09:06:06.404674 | 2023-10-29 09:06:06.404674+00
(2 rows)
Views: 1,007 · Posted: 2023-11-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...