[英]Difference Between two dates or N/A
我有兩個日期之間的計算。
我想要做的是,如果開始日期在 03/07/20 之前,則顯示 N/A,否則兩個日期之間的差異
case
when StartDate < cast('03-07-20' as date) then
'N/A'
else
DATEDIFF(day, cast(StartDate as date), cast(SwabDate as date) )
end
as Days_From_First
我得到
將 varchar 值“N/A”轉換為數據類型 int 時轉換失敗。 警告:空值被聚合或其他 SET 操作消除。
感謝您的幫助
case
表達式的所有分支都必須返回相同的數據類型,因此不能讓分支返回字符串( 'NA'
)而另一個返回整數(由datediff()
返回)。 這樣做時會發生什么情況是 SQL Server 優先考慮數字數據類型,因此嘗試將'NA'
強制轉換為整數 - 失敗。
您可以將datediff()
的返回值轉換為字符串 - 但我不建議這樣做。 可能,使用null
是最好的方法:在 SQL 中,這通常是我們表示數據缺失的方式:
case when StartDate >= '20200703'
then datediff(day, cast(startdate as date), cast(swabdate as date))
end as Days_From_First
請注意,我將日期比較更改為使用文字'20200703'
,SQL Server 能夠明確理解為YYYYMMDD
格式的日期。
您需要將結果轉換為字符串:
(case when StartDate < cast('2020-03-07' as date)
then 'N/A'
else convert(varchar(255), datediff(day, cast(StartDate as date), cast(SwabDate as date) ))
end) as Days_From_First
也就是說,我真的建議您忘記'N/A'
而只使用NULL
。
另外,我不知道你的日期是 2020-03-07 還是 2020-07-03。 這就是您應該使用標准日期格式的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.