加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

错误:COALESCE类型没有时区的时间戳和整数无法匹配(Postgresql)

发布时间:2020-12-13 15:54:41 所属栏目:百科 来源:网络整理
导读:##问题## 我从这个脚本得到错误(Postgresql 9.3.2) (在MS SQL Server中没问题) SELECT CASE COALESCE(my_date_field,0) WHEN 0 THEN 0 ELSE 1 END AS statusFROM my_table 错误:COALESCE类型没有时区的时间戳和整数无法匹配 第2行:CASE COALESCE(my_date_f
##问题##

我从这个脚本得到错误(Postgresql 9.3.2)
(在MS SQL Server中没问题)

SELECT 
 CASE COALESCE(my_date_field,0) 
 WHEN 0 THEN 0 
 ELSE 1 END 
 AS status
FROM 
 my_table

错误:COALESCE类型没有时区的时间戳和整数无法匹配
第2行:CASE COALESCE(my_date_field,0)

## 解决了 ##

SELECT 
  CASE WHEN my_date_field IS NULL 
  THEN 0 ELSE 1 END 
  AS status
FROM 
  my_table

COALESCE几乎接受任意数量的参数,但它们应该是相同的数据类型.
我引用了COALESCE Function in TSQL

解决方法

零不是有效日期.令人惊讶的是它在MS SQL中有效.您需要使用合理的日期,或接受NULL.

CASE COALESCE(my_date_field,DATE '0001-01-01')

查询总的来说有点奇怪.这不是一种令人难以置信的冗长而复杂的写入IS NULL的方式吗?

SELECT 
 my_date_field IS NULL AS status
FROM 
 my_table

如果,根据评论,您想要0或1,请使用:

SELECT 
 CASE WHEN my_date_field IS NULL THEN 1 ELSE 0 END AS status
FROM 
 my_table

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读