对TIMESTAMP值执行if / else时出现不匹配错误

时间:2018-08-03 02:03:58

标签: teradata

您好,请帮助我纠正此代码:

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”。我收到错误消息“数据类型不匹配。”

预先感谢

1 个答案:

答案 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