在Postgres中,如何从给定的TIMESTAMP WITH TIME ZONE列中提取月份(根据特定时区)?
问题描述:
我有一个名为login_timestamp
的列,其类型为TIMESTAMP WITH TIME ZONE
。在Postgres中,如何从给定的TIMESTAMP WITH TIME ZONE列中提取月份(根据特定时区)?
要检索此时间戳的月份,我会这样做:EXTRACT(MONTH FROM login_timestamp)
。
但是,我想检索一个特定时区的月份(在我的情况下,巴基斯坦),但无法弄清楚如何做到这一点。
答
的文档,这是Date/Time Functions and Operators下。在“时区”搜索该页面。
select extract(month from login_timestamp at time zone 'Asia/Karachi');
您可以更改时区单个会话或与set session...
或set local...
一个单一的交易。例如,这会更改当前会话的时区。
set session time zone 'Asia/Karachi';
答
使用AT TIME ZONE
结构:
SELECT EXTRACT(MONTH FROM login_timestamp AT TIME ZONE '-5');
-5是常数巴基斯坦偏移。
详情:
答
尝试应用AT TIME ZONE
。演示
select extract(month from cast ('2017-07-01 01:00+03' as TIMESTAMP WITH TIME ZONE) AT TIME ZONE '+08') as monthNo
回报
monthno
1 6