2014-03-30 57 views
1

我很難在我的表中查找行,其中兩個日期列之間的差異至少爲20天(不需要特定日期,僅需20天差)SQL其中日期列大於其他日期列至少20天

我想這沒有運氣:

SELECT DocDate,DocDueDate,DocStatus 
FROM dbo.OPCH 
WHERE (DocDate - DocDueDate = 20) AND DocStatus = 'O' AND DocDate > '2014-01-01' 

這是行不通的。
任何幫助,將不勝感激

+1

刪除mysql的標籤,因爲語法是SQL服務器。 –

+1

如果你至少需要20天,那麼你不需要等號,你想要一個大於或等於號。 –

回答

3

如果你的日期爲datetime實際聲明,你可以這樣做:

SELECT DocDate,DocDueDate,DocStatus 
FROM dbo.OPCH 
WHERE (DocDate >= DocDueDate + 20) AND DocStatus = 'O' AND DocDate > '2014-01-01'; 

添加一個數字的日期時間被解釋爲並稱天數。不幸的是,這對date不起作用。

對於date,你可以這樣做:

WHERE datediff(day, DocDueDate, DocDate) >= 20 AND DocStatus = 'O' AND DocDate > '2014-01-01' 
相關問題