2011-03-22 34 views
2

我想要僅在最近1天內輸入的行。在MySQL中的兩個日期之間返回行

我有一個日期列,其中存儲YYYY-MM-DD,我允許用戶發送他們想要查看的日期格式yyymmdd如何使用此數據將其限制爲前一天?

我會想象這是關於BETWEEN關鍵字,但我無法弄清楚。

+0

前一天=昨天或('yyyymmdd' - 一天)? – jgauffin 2011-03-22 15:42:37

回答

5

這個查詢:

SELECT * 
FROM mytable 
WHERE mydate >= STR_TO_DATE('110321', '%y%m%d') - INTERVAL 1 DAY 
     AND mydate < STR_TO_DATE('110321', '%y%m%d') 

將返回所有記錄Mar 20, 2011

+0

這對我有用,如果我使用字符串'110321',但是如果我使用「STR_TO_DATE('$ testDate','%y%m%d')」它不會$ testDate = $ _POST ['日期']; $ testDate =(string)$ testDate); $ testDate的格式= YYYYMMDD – nhunston 2011-03-22 17:47:07

+0

@Herly:四位數年份使用'%Y%m%d'(注意大寫'Y')。 – Quassnoi 2011-03-22 17:51:04

+0

沒關係,因爲我使用的是YYYMMDD而不是YYMMDD。謝謝你的幫助。 – nhunston 2011-03-22 17:51:39

4
SELECT * from TABLE_NAME WHERE ROW_DATE BETWEEN '2011-03-20' AND '2011-03-21' 
+0

這也會返回'2011-03-21 00:00:00'的記錄。 – Quassnoi 2011-03-22 15:46:15

0

從MySQL手冊(here):

 
SELECT something FROM tbl_name WHERE DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= date_col; 
0
SELECT * FROM YourTable WHERE date_column = DATE_ADD(CURDATE(), INTERVAL -1 DAY) 

這將返回所有行至一天和昨天。

相關問題