错误:COALESCE 类型时间戳没有时区和整数无法匹配(Postgresql)
Posted
技术标签:
【中文标题】错误:COALESCE 类型时间戳没有时区和整数无法匹配(Postgresql)【英文标题】:ERROR: COALESCE types timestamp without time zone and integer cannot be matched (Postgresql) 【发布时间】:2014-03-19 04:51:53 【问题描述】:##问题##
此脚本出错 (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
Error :COALESCE types timestamp without time zone and integer cannot be matched
Line 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
【问题讨论】:
【参考方案1】:零不是有效日期。令人惊讶的是它可以在 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
【讨论】:
我只需要在新字段'status'中存储0(如果my_data_field为null)和1(如果my_data_field不为null)以上是关于错误:COALESCE 类型时间戳没有时区和整数无法匹配(Postgresql)的主要内容,如果未能解决你的问题,请参考以下文章
错误:列 <名称> 的类型是没有时区的时间戳,但表达式的类型是字符变化
PostgresQL + Spring JPA:org.postgresql.util.PSQLException:错误:无法将类型 bytea 转换为没有时区的时间戳
.NET6 和 DateTime 问题。无法将 Kind=UTC 的 DateTime 写入 PostgreSQL 类型“没有时区的时间戳”