簡體   English   中英

兩個日期之間的差異或 N/A

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM