postgresql 类型双精度的无效输入语法
postgresql invalid input syntax for type double precision
我有一个 table 有几位欧洲君主的出生和死亡, table 没有年龄栏,我必须添加它。还有几个空值和 'None' 值,在这种情况下,年龄列应显示为未知。
下面的代码给我一个 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 函数。非常感谢。
编辑
birth 和 death 列是 varchars 并且具有这种格式 0208-10-01T00:53:28+00:53
已解决
使用了以下代码
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。
我有一个 table 有几位欧洲君主的出生和死亡, table 没有年龄栏,我必须添加它。还有几个空值和 'None' 值,在这种情况下,年龄列应显示为未知。
下面的代码给我一个 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 函数。非常感谢。
编辑
birth 和 death 列是 varchars 并且具有这种格式 0208-10-01T00:53:28+00:53
已解决
使用了以下代码
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。