我已经提到了psql documentation,并提出了这个问题。
SELECT to_timestamp('Tue Aug 30 2016 04:07:13 GMT+0530 (IST)', 'Dy MON DD YYYY HH24:MI:SS');
这个日期时间字符串Tue Aug 30 2016 04:07:13 GMT+0530 (IST)
是我从MongoDB printjson(createdAt)获得的。
以上postresql似乎无法正确处理所有偏移。
我试过这个
select to_timestamp('Tue Aug 30 2016 04:07:13 GMT+0530 (IST)', 'Dy MON DD YYYY HH24:MI:SS "GMT"OF "(IST)"');
但是我得到了这个错误``错误:" TZ" /" tz" /" OF" to_date`不支持格式模式。
如何从此字符串Tue Aug 30 2016 04:07:13 GMT+0530 (IST)
转换为psql timestamptz格式?
答案 0 :(得分:1)
它看起来很难看,并且对于每个无法识别的偏移都需要replace
,但它有效。对于您的示例,请将'GMT+0530 (IST)'
替换为'GMT+05:30'
,然后将其选中:
t=# select replace('Tue Aug 30 2016 04:07:13 GMT+0530 (IST)','GMT+0530 (IST)','GMT+05:30')::timestamptz;
replace
------------------------
2016-08-30 09:37:13+00
(1 row)
t=# select replace('Tue Aug 30 2016 14:07:13 GMT+0530 (IST)','GMT+0530 (IST)','GMT+05:30')::timestamptz;
replace
------------------------
2016-08-30 19:37:13+00
(1 row)
更新:根据您的时区结果可能会造成混淆:
t=# set timezone TO 'GMT-5:30'; SET
t=# select replace('Tue Aug 30 2016 14:07:13 GMT+0530 (IST)','GMT+0530 (IST)','GMT+05:30')::timestamptz;
replace
---------------------------
2016-08-31 01:07:13+05:30
(1 row)
检查是否正确,使用:
t=# select replace('Tue Aug 30 2016 14:07:13 GMT+0530 (IST)','GMT+0530 (IST)','GMT+05:30')::timestamptz at time zone 'UTC';
timezone
---------------------
2016-08-30 19:37:13
(1 row)