You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:10:48