您好,请帮助我纠正此代码:
CASE WHEN CAST (Status_Start_TS AS TIMESTAMP) < '2018-07-15 0:0:0'
THEN '2018-07-15'
ELSE Status_Start_TS
END AS "Start",
我要比较日期为col Status_Start_TS
的类型为TIMESTAMP的日期和时间与“ 2018-07-15 0:0:0”。我收到错误消息“数据类型不匹配。”
预先感谢
答案 0 :(得分:0)
我认为问题出在您的日期/时间戳文字上,正如您目前编写的那样,它们只是被解释为字符串。试试这个版本:
CASE WHEN Status_Start < DATE '2018-07-15'
THEN DATE '2018-07-15'
ELSE Status_Start END AS Start
如果您要检查Status_Start
是否早于某个日期的午夜,则应该可以将其与该日期的日期文字进行比较。
尚不清楚您为什么要考虑将Status_Start
与时间戳进行比较,假设前者是日期,没有正式的时间成分。假设Status_Start
实际上是一个时间戳列,那么以下内容可能更有意义:
CASE WHEN Status_Start < TIMESTAMP '2018-07-15 00:00:00'
THEN DATE '2018-07-15'
ELSE CAST(Status_Start AS DATE) END AS Start