我有两列日期字段date1
和date2
。
在date2
字段中,我有一些空白值,但我需要计算datediff(day,date1,date2)
。
date1
和date2
都有相同的条目数(包括date2
字段中的空白值)
我的要求是仅通过忽略datediff
date1
和date2
中相应值的date2
答案 0 :(得分:1)
由于您将值存储为VARCHAR
(如评论中所述),您可以使用以下内容:
Select DateDiff(Day, Convert(DateTime, Date1), Convert(DateTime, Date2))
From YourTable
Where Date2 <> ''
And Date2 Is Not Null
您应该将任何DATE
或DATETIME
值存储为适当的数据类型,以避免出现并发症。
要验证数据是否将转换为日期,请在SQL Server 2012
或更高版本中添加其他Where
子句:
Where Try_Convert(DateTime, Date1) Is Not Null
And Try_Convert(DateTime, Date2) Is Not Null
但是对于SQL Server 2008
,你可以使用ISDATE()
(但是因为不准确而臭名昭着。)
Where IsDate(Date1) = 1
And IsDate(Date2) = 1
您可能还需要设置DateFormat
,如果它不是您期望的内容(例如DD/MM/YYYY
vs MM/DD/YYYY
vs YYYY-MM-DD
等。 )。
Set DateFormat MDY -- Or whatever your date format is in the field.
除此之外......只需查看您的数据,看看为什么它没有转换。