我正在将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
欢迎任何建议。
答案 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}}虽然