转换 Unix 时间戳时使用默认日期



我正在将 unix 时间戳转换为日期

TO_TIMESTAMP(CAST( my_column AS BIGINT  ) / 1000 )

名为my_column的属性是TEXT数据类型。开发人员已将源数据设计为允许 NULL,它正在破坏我的代码。

有没有办法编写一个合并语句来转换我的 Unix 时间戳或输出 NULL 值的默认日期?我尝试了以下方法

CASE WHEN my_column IS NULL THEN '2001-01-01 00:00:00' ELSE TO_TIMESTAMP(CAST( my_column AS BIGINT  ) / 1000 ) END 

但我收到错误

ERROR: invalid input syntax for integer: ""

欢迎任何建议。

问题是空字符串 ('') 不能转换为数字。

您还需要检查空字符串,例如:

CASE 
WHEN nullif(trim(my_column),'') IS NULL THEN '2001-01-01 00:00:00' 
ELSE TO_TIMESTAMP(CAST( my_column AS BIGINT  ) / 1000 ) 
END

这将正确处理所有空、空字符串或只有空格的字符串。如果无法转换为数字的内容存储在该列中,则这仍然会失败(例如'foobar')


但是您确实应该尝试将其更改为至少bigint列。不过timestamp会好得多

最新更新