修复错误:“运算符不存在:没有时区的时间戳>整数”错误

时间:2019-07-10 17:59:43

标签: postgresql

我正在尝试将查询从Google大查询迁移到postgresql,而我却收到此错误

  

错误:运算符不存在:没有时区的时间戳>整数

select *, DATE(_modification_time) as modification_date, 
       CASE WHEN t_start>0 THEN DATE(t_start) END as start_date, 
       CASE WHEN _creation_time>0 THEN DATE(_creation_time) END as creation_date, 
       CASE WHEN t_finish>0 THEN DATE(t_finish) END as finish_date, 
       'WMT' as source 
from public.set_list

1 个答案:

答案 0 :(得分:0)

您正在尝试将timestamp值与整数(0)进行比较。在Postgres中是不允许的。取而代之的是,您可以通过使用extract函数将时间戳记转换为整数,并获取自Unix纪元(1970-01-01 00:00:00)开始以来的秒数(为整数),然后将其与整数0,如下所示:

select *, DATE(_modification_time) as modification_date, 
       CASE WHEN extract(EPOCH FROM t_start) > 0
            THEN DATE(t_start) END as start_date, 
       CASE WHEN extract(EPOCH FROM _creation_time) > 0
            THEN DATE(_creation_time) END as creation_date, 
       CASE WHEN extract(EPOCH FROM t_finish) > 0
            THEN DATE(t_finish) END as finish_date, 
       'WMT' as source 
from public.set_list

但是,我怀疑这就是您想要的,因为这意味着您正在比较t_start_creation_timet_finish中的任何一个值是否晚于1970-01-01 00 :00:00。也许您可以在这里分享一些您想要完成的事情。这将帮助您获得更集中的答案。