问题描述
我正在尝试将bigint值转换为Postgresql中的日期
我正在使用以下代码
SELECT TO_CHAR(TO_TIMESTAMP(1564983632051/ 1000),'YYYY-MM-DD HH24:MI:SS')
然后返回2019-08-05 07:40:32
,这是正确的。
但是我想增加几个小时来获取本地时间。尝试使用以下查询,但抛出错误:
SELECT TO_CHAR(TO_CHAR(TO_TIMESTAMP(1564983632051/ 1000),'YYYY-MM-DD HH24:MI:SS') + INTERVAL '4 hour')
我不想使用单独的查询,如果可以的话 选择(to_timestamp('2019-08-05 07:40:32','YYYY-MM-DD HH24:MI:SS.US')+间隔'4 hour'):: timestamp; 这将返回所需的输出。
我需要在单个查询中同时进行转化和加班。
解决方法
您应该添加到TIMESTAMP
部分,而不是添加到CHAR
的部分:
SELECT TO_CHAR(
TO_TIMESTAMP(1564983632051/ 1000)+ INTERVAL '4 hour','YYYY-MM-DD HH24:MI:SS'
)
,
问题在这里:
select pg_typeof(TO_CHAR(TO_TIMESTAMP(1564983632051/ 1000),'YYYY-MM-DD HH24:MI:SS'));
pg_typeof
-----------
text
在文本值中添加interval
无效。
类似这样:
select TO_CHAR(TO_TIMESTAMP(1564983632051/1000) + interval '4 hour','YYYY-MM-DD HH24:MI:SS') ;
to_char
---------------------
2019-08-05 02:40:32
最好保持操作类型直到最后。然后应用格式。