我有一张桌子上有几个欧洲君主的出生和死亡,这张桌子没有年龄栏,我必须加上它。还有几个null和'None‘值,在这种情况下,age列应该显示未知。
下面的代码给出了一个invalid input syntax for type double precision错误。
SELECT CASE
WHEN date_part('year', age(TO_TIMESTAMP(death, 'YYYY-MM-DD'), TO_TIMESTAMP(birth, 'YYYY-MM-DD'))) = 'None' OR death ISNULL
THEN 'Unknown'
ELSE
date_part('year', age(TO_TIMESTAMP(death, 'YYYY-MM-DD'), TO_TIMESTAMP(birth, 'YYYY-MM-DD')))
END作为君主制的年龄
postgresql没有datediff函数。非常感谢。
编辑
生灭列是varchars,格式为0208-10-01T00:53:28+00:53。
发布于 2022-02-23 03:14:08
解析
使用下列代码
CASE
WHEN death IS NULL OR birth IS NULL
THEN 'Unknown'
ELSE CAST(EXTRACT(YEAR FROM TO_TIMESTAMP(death, 'YYYY-MM-DD')) - EXTRACT(YEAR FROM TO_TIMESTAMP(birth, 'YYYY-MM-DD')) AS VARCHAR)
END ‘'null’是一个字符串。我的查询正在执行一个子字符串,而case语句需要具有相同的数据类型,所以我必须将其输入到varchar。
https://stackoverflow.com/questions/71230264
复制相似问题