如何通过PostgreSQL查询设置时区?如何获取当前时间戳?
PostgreSQL 时区设置与当前时间戳获取指南
1. 通过查询语句设置时区
PostgreSQL支持不同层级的时区配置,常用查询语句方式如下:
- 会话级(仅当前数据库连接生效):
执行SET TIME ZONE语句,可使用时区名称(推荐,自动适配夏令时)或UTC偏移量:-- 使用时区名称 SET TIME ZONE 'Asia/Shanghai'; -- 使用UTC偏移量 SET TIME ZONE '+08:00'; - 数据库级(所有连接该数据库的会话默认生效):
需具备数据库权限,执行后需重新连接才会生效:ALTER DATABASE your_database_name SET TIME ZONE 'Asia/Shanghai'; - 全局级(整个PostgreSQL实例生效):
修改后需重启服务才能生效:ALTER SYSTEM SET timezone = 'Asia/Shanghai';
2. 获取当前时间戳
PostgreSQL提供多个函数获取当前时间戳,按需选择:
CURRENT_TIMESTAMP/NOW():返回带时区的当前时间戳(如2024-05-20 14:30:00+08),是多时区场景下的常用选择,和你提供的代码示例用法一致。LOCALTIMESTAMP:返回不带时区的本地时间戳(如2024-05-20 14:30:00),不推荐跨时区场景使用。CURRENT_DATE/CURRENT_TIME:分别返回仅日期部分、仅时间部分的当前值。
代码示例(Node.js + PostgreSQL)
使用pg库执行查询时,可将CURRENT_TIMESTAMP作为参数传入,也可直接嵌入SQL语句:
const query = "UPDATE gtt_ledger SET deleted_at = $1 WHERE id= $2 "; let result = await client.query(query, [CURRENT_TIMESTAMP , id]);
简化写法(直接将函数嵌入SQL,减少参数传递):
const query = "UPDATE gtt_ledger SET deleted_at = CURRENT_TIMESTAMP WHERE id= $1 "; let result = await client.query(query, [id]);
内容的提问来源于stack exchange,提问作者Tushar Sinha
相关产品推荐
相关产品推荐

