我需要在某个时区(例如'Etc/UTC')将表示没有时区(即"2017-03-08T20:53:05")的时间戳的字符串转换为带有时区的时间戳.
问题是默认时区不是'Etc/UTC'.所以,当我想要的时候
SELECT to_timestamp(field1, 'YYYY-MM-DD hh24:mi:ss')::timestamp without time zone at time zone 'Etc/UTC'
Run Code Online (Sandbox Code Playgroud)
它将字符串转换为具有默认时区的值,然后将转换从本地时区应用到"Etc/UTC".这不是所要求的.
基本上,我正在寻找一种方法告诉postgres原始字符串值表示特定时区的时间,而不是默认的本地时间.
谢谢.
更新:我已检查上述声明是否真的有效.
SELECT to_timestamp(field1, 'YYYY-MM-DD hh24:mi:ss')::timestamp without time zone at time zone 'Etc/UTC'
Run Code Online (Sandbox Code Playgroud)
我被客户的时区设置误导了.
Seg*_*ult 12
您可以set time zone UTC;在查询之前运行:
set time zone UTC;
SELECT to_timestamp(field1, 'YYYY-MM-DD hh24:mi:ss')::timestamp without time zone at time zone 'Etc/UTC';
Run Code Online (Sandbox Code Playgroud)
这会解决您的问题吗?
:timestamp without time zone 不需要,只需:
SELECT to_timestamp(field1, 'YYYY-MM-DD hh24:mi:ss') at time zone 'Etc/UTC'
Run Code Online (Sandbox Code Playgroud)
小智 8
就我而言,这成功了(感谢shajji的回答)
to_timestamp(:date, 'YYYY-MM-DD"T"HH24:MI:SS:MS"Z"') at time zone (select current_setting('timezone')) at time zone 'Etc/UTC'
Run Code Online (Sandbox Code Playgroud)
首先找到您的默认时区。通过使用以下查询。
Select current_setting('timezone');
就我而言 Asia/Karachi
k,现在只需尝试以下查询。
Select Cast('1990-01-25' as Date) at time zone '<Your Default Timezone>' at time zone 'utc';
Run Code Online (Sandbox Code Playgroud)
就我而言。
Select Cast('1990-01-25' as Date) at time zone 'Asia/Karachi' at time zone 'utc';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38351 次 |
| 最近记录: |