我有兩列,日期字段date1
和date2
。 在date2
字段我有一些空白值,但我需要計算datediff(day,date1,date2)
。 兩個date1
和date2
有條目(包括date2
字段爲空值)等於沒有datediff的兩列,當一列在sqlserver中有空值時
我的要求是計算datediff
僅由既然你在date2
我有兩列,日期字段date1
和date2
。 在date2
字段我有一些空白值,但我需要計算datediff(day,date1,date2)
。 兩個date1
和date2
有條目(包括date2
字段爲空值)等於沒有datediff的兩列,當一列在sqlserver中有空值時
我的要求是計算datediff
僅由既然你在date2
忽略空值對應於date1
和date2
值存儲值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.
除此之外...只是看看你的數據,看看它爲什麼不轉換。
我收到以下錯誤'從字符串轉換日期和/或時間時轉換失敗。 –
@PrasanthG這是你不應該將日期存儲爲字符串的原因之一。你使用的是什麼版本的SQL Server? – Siyual
SQL server 2008. –
'where date2 is not null'?也許你應該讀一本關於sql的書並閱讀它。 – Will
請添加示例。 – M84
當'date2'爲'null'時,你期望的結果是什麼?你想完全忽略它還是返回別的東西? – Siyual