我有个问题。我一直收到错误
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.PHPPDT
和j.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