2013-09-24 59 views
2

我正在使用訪問數據庫,我需要編寫SQL查詢來顯示信息。我無法弄清楚如何顯示我需要的東西。SQL中的日期函數?

在英語中,我需要一個查詢來顯示當到期日期距離當前日期少於三十天時的說明和過期日期。

我對SQL的瞭解有限。如果任何人都能指出我的具體資源,這將是非常有幫助的。提前致謝。

以下是我有:

SELECT Description, [Expiration Date] 
FROM Hardware 
WHERE [Expiration Date] = "(GET DATE()"; 
+0

從短暫地看着這個我會猜測它只是'Date()'http://support.microsoft.com/kb/210604/en-us – DrCopyPaste

回答

1

可以使用的功能NOW()DATE()獲得當前的日期。

要將日期添加到日期,請使用DATEADD函數。

WHERE DATEADD(d, 30, [Expiration Date]) >= DATE() 
0

這樣的:

SELECT Description, [Expiration Date] 
FROM Hardware 
WHERE DATEDIFF([Expiration Date], NOW()) < 30; 

或本:

SELECT Description, [Expiration Date] 
FROM Hardware 
WHERE [Expiration Date] < DATE_ADD(NOW(),INTERVAL 30 DAY); 

應該工作。

1
SELECT [Description], [Expiration Date] 
FROM Hardware 
WHERE DateDiff('d', [Expiration Date], Date()) < 30; 

Descriptionreserved word。我把它放在方括號中以避免混淆數據庫引擎。

另外,DateDiff表達式只計算一天的變化次數。這意味着#2013-9-23 23:00##2013-9-24 01:00#將被計爲1天。如果這不是你想要的,你可以直接在日期/時間值上進行日期算術。

SELECT [Description], [Expiration Date] 
FROM Hardware 
WHERE (Date() - [Expiration Date]) < 30; 

如果Hardware是與[Expiration Date]索引的表龐大,你可以得到支持索引檢索,而不是檢查表的每一行的查詢更好的性能。

SELECT [Description], [Expiration Date] 
FROM Hardware 
WHERE [Expiration Date] > (Date() - 30);