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

前端之家收集整理的这篇文章主要介绍了错误:COALESCE类型没有时区的时间戳和整数无法匹配(Postgresql)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
##问题##

我从这个脚本得到错误(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

猜你在找的Postgre SQL相关文章