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

时间:2018-01-15 20:28:33

标签: postgresql

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

resultsVec[[2]]

名为 my_column 的属性是 TEXT 数据类型。开发人员设计了源数据以允许NULL并且它破坏了我的代码。

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

TO_TIMESTAMP(CAST( my_column AS BIGINT  ) / 1000 )

但是我收到了错误

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

欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

问题是空字符串('')无法转换为数字。

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

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

这将正确处理所有null,空字符串或仅包含空格的字符串。如果某个无法投放到某个数字的内容存储在该列中(例如'foobar'

,这仍然会失败

但您应该尝试将其更改为至少bigint列。 <{1}}虽然

会好得多