当一列在sqlserver

时间:2017-08-01 17:00:36

标签: sql-server datediff

我有两列日期字段date1date2。 在date2字段中,我有一些空白值,但我需要计算datediff(day,date1,date2)date1date2都有相同的条目数(包括date2字段中的空白值)

我的要求是仅通过忽略datediff

中的空白值来计算date1date2中相应值的date2

1 个答案:

答案 0 :(得分:1)

由于您将值存储为VARCHAR(如评论中所述),您可以使用以下内容:

Select    DateDiff(Day, Convert(DateTime, Date1), Convert(DateTime, Date2))
From      YourTable
Where     Date2 <> ''
And       Date2 Is Not Null

您应该将任何DATEDATETIME值存储为适当的数据类型,以避免出现并发症。

要验证数据是否将转换为日期,请在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.

除此之外......只需查看您的数据,看看为什么它没有转换。