在CTE中选择时,从字符串转换日期和/或时间时转换失败



我有个问题。我一直收到错误

CASE WHEN j.PHPPDT = '00010101' THEN '0' ELSE j.PHPPDT END AS NEWPPDT,
CASE WHEN j.PHPDTE = '00010101' THEN '0' ELSE j.PHPDTE END AS NEWPROMDT

j.PHPPDTj.PHPDTE的数据类型为DATE

当我只运行它们时,代码似乎在运行。然而,后来我用我的代码创建了另一个CTE,需要选择它们,然后我得到了一个错误的

NEWPPDT AS PrintersPortDate,
NEWPROMDT AS PromiseByDate, 

错误为:

从字符串转换日期和/或时间时转换失败。

我真的不确定在哪里以及如何修复它,因为通常当这种事情发生时,我只使用

WHERE CONVERT(DATE, CONVERT(CHAR(8), NEWPPDT )) 

但在这里没有帮助。此外,我甚至不知道该在哪里插入它。我应该在case语句中将它插入j.PHPPDT,还是在选择列时。。。

这很令人困惑。有人知道什么可能有帮助吗?

您可以尝试使用一些默认日期值,而不是"0">

CASE WHEN j.PHPPDT = '00010101' THEN '12/31/2099' ELSE j.PHPPDT END AS NEWPPDT,
CASE WHEN j.PHPDTE = '00010101' THEN '12/31/2099' ELSE j.PHPDTE END AS NEWPROMDT

最新更新