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

Postgres数据库中特定时区当前时间获取及多时区时间对比方法

1. 如何在Postgres数据库中获取特定时区的当前时间?

Postgres提供AT TIME ZONE子句实现特定时区的当前时间获取,常用两种方式:

  • 直接转换当前时间到目标时区
    结合CURRENT_TIMESTAMP(或now())使用AT TIME ZONE,可返回带时区或无时区的目标时间:

    -- 获取带时区的纽约当前时间
    SELECT CURRENT_TIMESTAMP AT TIME ZONE 'America/New_York';
    -- 获取无时区的纽约本地时间(值为纽约当地时间)
    SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AT TIME ZONE 'America/New_York';
    

    时区需使用Postgres支持的标准名称(如Asia/Shanghai),可通过SELECT * FROM pg_timezone_names;查询所有可用时区。

  • 设置会话时区后获取时间
    若当前会话需持续使用某时区,先设置会话时区再调用时间函数:

    SET TIME ZONE 'Asia/Shanghai';
    SELECT CURRENT_TIMESTAMP;
    
2. 如何在Postgres数据库中获取并对比多个时区下的当前日期时间?

通过一次查询即可完成多时区时间的获取与对比,推荐两种写法:

  • 横向单行对比
    在SELECT语句中同时列出多个时区的转换结果,便于直观对比:

    SELECT
      CURRENT_TIMESTAMP AS utc_time,
      CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Shanghai' AS shanghai_time,
      CURRENT_TIMESTAMP AT TIME ZONE 'America/Los_Angeles' AS la_time,
      CURRENT_TIMESTAMP AT TIME ZONE 'Europe/Paris' AS paris_time;
    
  • 纵向多行对比(适配多场景)
    结合VALUES子句批量定义时区,生成结构化的对比结果:

    SELECT
      tz.timezone,
      CURRENT_TIMESTAMP AT TIME ZONE tz.timezone AS local_time
    FROM (
      VALUES
        ('Asia/Shanghai'),
        ('America/New_York'),
        ('Europe/London'),
        ('Australia/Sydney')
    ) AS tz(timezone);
    

    这种方式可快速扩展时区数量,结果按时区分行展示,清晰呈现不同时区的时间差。

内容的提问来源于stack exchange,提问作者Vamsi Jayavarapu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:56:04