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。