2017-08-01 34 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. –

相關問題