2013-01-22 115 views
0

我不得不做出這個kinf查詢:查詢每一天的過去,從今天

SELECT COUNT(*) 
FROM `reportinc` 
WHERE `Data/ora chiusura` >= 'YESTERDAY AT 18:01:00' 
AND `Data/ora chiusura` <= 'TODAY AT 18:00:00' 

日期格式爲20/01/13(我認爲%d /%M /%Y)。我嘗試了LINK CURRENT_DATE - INTERVAL 1天+ INTERVAL'18:00:00'HOUR_SECOND或乾脆CURRENT_DATE - INTERVAL 1天,但沒有人工作..

如何?

+1

你有存儲爲VARCHAR的日期? (編輯你的問題或使用評論框來回答)。 –

+0

是的是varchar ..感謝 – svratonzo

回答

0

將日期存儲爲VARCHAR是一個壞主意。日期應作爲日期存儲,並且可以使用PHP(strtotimedate)或MySQL(DATE_FORMAT)以任何所需格式格式化。

說了這麼多,你可以使用STR_TO_DATE函數的日期字符串轉換成日期:

SELECT STR_TO_DATE('20/01/13', '%d/%m/%y') 
-- 2013-01-20 

轉換後,您可以使用日期比較的日期。此示例查詢構建您需要爲您查詢兩個日期:

SELECT CURDATE() + INTERVAL 18 HOUR 
-- 2013-01-22 18:00:00 
SELECT CURDATE() + INTERVAL 18 HOUR - INTERVAL 1 DAY 
-- 2013-01-21 18:00:00 

這是(希望)生成所需的結果查詢:

SELECT COUNT(*) 
FROM `reportinc` 
WHERE STR_TO_DATE(`Data/ora chiusura`, '%d/%m/%y') >= CURDATE() + INTERVAL 18 HOUR - INTERVAL 1 DAY 
AND STR_TO_DATE(`Data/ora chiusura`, '%d/%m/%y') <= CURDATE() + INTERVAL 18 HOUR 
+0

它似乎工作。 – svratonzo

+0

'Column + INTERVAL 18 HOUR - INTERVAL 1 DAY'與寫作'Column - 6 HOUR'(18 - 24 = -6)'相同。 –