2017-08-01 97 views
0

我有两列,日期字段date1date2。 在date2字段我有一些空白值,但我需要计算datediff(day,date1,date2)。 两个date1date2有条目(包括date2字段为空值)等于没有datediff的两列,当一列在sqlserver中有空值时

我的要求是计算datediff仅由既然你在date2

+0

'where date2 is not null'?也许你应该读一本关于sql的书并阅读它。 – Will

+0

请添加示例。 – M84

+0

当'date2'为'null'时,你期望的结果是什么?你想完全忽略它还是返回别的东西? – Siyual

回答

1

忽略空值对应于date1date2值存储值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. 

除此之外...只是看看你的数据,看看它为什么不转换。

+0

我收到以下错误'从字符串转换日期和/或时间时转换失败。 –

+1

@PrasanthG这是你不应该将日期存储为字符串的原因之一。你使用的是什么版本的SQL Server? – Siyual

+0

SQL server 2008. –

相关问题