postgresql - 修复错误:“运算符不存在:没有时区的时间戳>整数”错误
问题描述
我试图将查询从谷歌大查询迁移到 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
解决方案
您正在尝试将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_time
并且t_finish
晚于 1970-01-01 00:00:00。也许你可以在这里分享更多关于你想要完成的事情。这将帮助您获得更集中的答案。
推荐阅读
- javascript - html表格中多个单元格的自定义金额减法
- ios - 终止的应用程序未使用 iBeacon 数据包唤醒
- c# - C# 类中的静态实例变量
- spring-boot - 如何禁用 Spring Boot 验证工厂
- anaconda - NotWritableError conda 安装新模块
- vue.js - 从 iframe 内的页面发出的 Nuxt.js 全局事件对父页面不可用
- elasticsearch - Liferay 7 搜索不返回结果 - 自定义实体
- python - python安装speex dsp模块错误
- python - 如何在python中使用正则表达式将子字符串替换为另一个包含该子字符串的字符串
- javascript - 如何在 redis 中找到部分匹配的值并更新它是否已经存在?