gpt4 book ai didi

sql-server - Case when语句中的SQL转换错误

转载 作者:行者123 更新时间:2023-12-02 10:54:19 25 4
gpt4 key购买 nike

我正在尝试查看4个日期字段,然后选择最新的一个。一切正常,直到我没有任何东西进入一个 Realm 。然后我得到一个

"Conversion failed when converting date and/or time from character string." error.



有没有办法忽略空值?
Select AP.ID, AP.CERT_DATE as 'Cert Date', AP.Recert_Date as 'Recert Date', AP.Recert_Date2 as 'Recert Date 2', AP.Recert_Date3 as 'Recert Date 3',
CASE
When AP.CERT_DATE > AP.Recert_Date AND AP.CERT_DATE > AP.Recert_Date2 AND AP.CERT_DATE > AP.Recert_Date3 Then AP.CERT_DATE
When AP.Recert_Date > AP.CERT_DATE AND AP.Recert_Date > AP.Recert_Date2 AND AP.Recert_Date > AP.Recert_Date3 Then AP.Recert_Date
When AP.Recert_Date2 > AP.CERT_DATE AND AP.Recert_Date2 > AP.Recert_Date AND AP.Recert_Date2 > AP.Recert_Date3 Then AP.Recert_Date2
When AP.Recert_Date3 > AP.CERT_DATE AND AP.Recert_Date3 > AP.Recert_Date AND AP.Recert_Date3 > AP.Recert_Date2 Then AP.Recert_Date3
ELSE 'Attention'
END AS 'Most Recent Year'
FROM Profile AP

最佳答案

如果您使用的是SQL Server 2012或更高版本,则对开发人员更友好的方法是使用TRY_CONVERT,该方法可以检查(n)varchar是否表示特定格式的有效日期时间。

应用哈维尔的答案,您可以得到以下内容:

declare @minDate DATE = '19000101'

(SELECT Max(d) FROM (VALUES
(ISNULL(TRY_CONVERT(DATETIME, CERT_DATE), @minDate),
(Recert_Date),
(Recert_Date2),
(Recert_Date3)
) AS value(d)) as 'Most Recent Year'

(仅将 TRY_CONVERT应用于varchars)

但是,如果可能,请尝试使所有日期列的类型为 DATEDATETIME2,而不是 VARCHAR

关于sql-server - Case when语句中的SQL转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com