提问者:小点点

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


我试图将查询从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)进行比较。这在Postgres中是不允许的。相反,您可以使用提取函数将时间戳转换为整数,并获取自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_time和t_finish是否晚于1970-01-01 00:00:00。也许你可以在这里分享更多关于你试图完成的事情。这将有助于你获得更集中的答案。