2012-02-03 93 views
0

我有這種格式的數據庫表中的日期字段2012-02-1.i需要編寫3次不同的查詢:mysql的日期函數

一)我需要檢索的所有領域,其中日期間的今天和前5天。
b。)我需要檢索日期比今天的日期早5天以後的所有字段。
c。)我需要檢索'5天前'到'30天前'之間的所有字段。

我可以使用一些內置的mysql函數。

操縱下面的查詢:

SELECT fields 
FROM table 
WHERE date >= CURDATE() - 5 

或像這樣

or子句之間使用。我沒有得到正確的語法。

SELECT p.status,p.downpayment_date,p.policy_id,i.id,i.policy_type,i.carrier,i.policy_nu‌​mber,i.client_id,c.id,c.client_name FROM pdp_payment AS p,pdp_policy_info AS i,pdp_client_info AS c WHERE p.policy_id=i.id AND i.client_id=c.id AND (((p.status='close pending') OR (p.status='Cancel')) AND (p.downpayment_date BETWEEN ((INTERVAL 5 DAY AND CURDATE()) - (INTERVAL 30 DAY AND CURDATE())))) 
+0

這不是日期時間數據type..it的類型是日期。 – Micheal 2012-02-03 02:58:13

+0

歡迎來到StackOverflow:如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼樣本」按鈕(「{}」)語法突出它! – 2012-02-03 05:59:35

回答

0

今天和過去5天之間的日期。

SELECT fields FROM table 
WHERE date_field BETWEEN CURRENT_DATE - INTERVAL 5 DAY AND CURRENT_DATE 

日期比前5天小。

SELECT fields FROM table 
WHERE date_field < CURRENT_DATE - INTERVAL 5 DAY 
0

對於所有日期介於今天和前5天之間的字段。

 

SELECT fields 
FROM table 
WHERE your_date_field_name BETWEEN CURDATE() - INTERVAL 5 DAY AND CURDATE() 
 

你可以計算出其他問題,以類似的方式

+0

上述查詢在邏輯上是否正確。我收到一個語法錯誤。一個我轉貼在頂部 – Micheal 2012-02-03 16:10:56

0

date是一個關鍵字,所以當你使用它作爲一個字段命名必須包含在反引號`否則你將得到一個解析錯誤。

爲了得到你想要的範圍:

WHERE `date` BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY) AND DATE_ADD(NOW(),INTERVAL -5 DAY) 
+0

是的,我得到了日期部分。但是我無法獲得語法之間的關係。例如 。我想在'5天前'到'30天前'之間約會 – Micheal 2012-02-03 15:29:15

+0

請參閱編輯以回答。 – 2012-02-03 15:45:04