PostgreSQL timestamp 与 timestamptz 区别

PostgreSQL Java About 1,437 words

相同点

  • 都占用8字节。
  • 存储时没有本质区别,都不携带时区信息。

不同点

  • insert returningselect时返回给客户端数据时不同。
  • inserttimestamp会直接保存不做转换;timestamptz会转换成当前数据库设置的时区,进行转换,再保存进数据库。
  • selecttimestamp会直接读取不做转换返回;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: 947 · Posted: 2023-11-11

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh