2009-12-02 174 views
-1

我有一個ms訪問表,包含startDate和EndDate,當兩個時間間隔的差值達到6個月時,如何從表中刪除一行使用SQL?我不需要給出日期我,我需要它,因爲我問... 任何幫助PLZ?SQL日期時間間隔

+1

最重要的問題是 - 爲什麼你需要刪除這些記錄?有什麼問題嗎?數百萬條記錄?錯誤消息? – 2009-12-02 07:51:54

+0

用一句話詳細解釋<>。 – onedaywhen 2009-12-02 08:34:19

+0

請不要再問一遍又一遍的問題 - 至少有兩個確切的重複內容..... – 2009-12-02 09:24:11

回答

1

使用DateDiff

DELETE FROM your_table 
WHERE DateDiff("m", startDate, EndDate) = 6 

對於記錄6個月及以上:

DELETE FROM your_table 
WHERE DateDiff("m", startDate, EndDate) <= 6 
0

在MSSQL的總體思路是這樣的:

DELETE FROM Archive WHERE [Date] < DATEADD(m, -6, GETDATE()) 

不知道是否訪問這些功能但應該有類似的東西。

編輯: 正如我懷疑,訪問做詢問服務Transact-SQL和具有這2層日期的功能,但它們只適用於Microsoft Access項目(.ADP)。希望這可以幫助。

+0

支持DateAdd()。對於GetDate(),你可以使用Date(),但我不認爲它回答了這個問題,因爲他不是爲6個月以上的記錄,而是爲兩個日期字段相隔6個月的記錄。 – 2009-12-03 06:01:18

1

你已經作出了正確的答案被@OMG小馬:

DELETE FROM your_table 
    WHERE DateDiff("m", startDate, EndDate) <= 6 

...但我傾向於不使用這個,因爲它不會使用索引。因爲你對一個現場測試的計算,而不是針對一個文本值,可以用在任何起始日期指數

DELETE FROM your_table 
    WHERE StartDate <= DateAdd("m", -6, EndDate) 

:相反,我會用這個。對於大型表格,這可能是一個重大的差異。