2009-11-11 100 views
53

我在玩MYSQL,我知道有一個限制命令可以顯示一定數量的結果,但我想知道是否MySQL只能顯示最後3天或什麼。就是想。MySQL SELECT最近幾天?

更新: 我用NOW()來存儲時間。

+0

@Doug,請給我們提供更多的信息。你的記錄如何計算DATETIME,DATE,TIMESTAMP和時代等時間?你想從現在開始的最後三天(CURRENT_DATE() - INTERVAL 3 DAYS)還是最近的記錄?等等 – pilcrow

回答

115

使用日期三天前:

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL -3 DAY); 

檢查DATE_ADD文檔。

或者你可以使用:

WHERE t.date >= (CURDATE() - INTERVAL 3 DAY) 
+3

「WHERE t.date> =(CURDATE() - INTERVAL 3 DAY)」應該足夠了 –

+0

非常有趣!我試着用DATE_ADD運行它,並且由於語法而保持失敗。然而,它沒有DATE_ADD,所以我只使用'CURDATE() - INTERVAL 3 DAY'。這是爲什麼? – Strawberry

+1

我通過phpmyadmin運行它,如果這有所作爲。 – Strawberry

2

您可以使用UNIX_TIMESTAMP()函數的組合來完成此操作。

SELECT ... FROM ... WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(thefield) < 259200 
+1

@Turnor,謹慎的日子並不總是由86,400秒組成的,閏秒和夏令時都是如此。 – pilcrow

+0

是的。但是很少有人需要這種精確度,而且聽起來並不像原來的問題那樣。 – Turnor

+0

@pilcrow牢記這一點,你將如何處理這個問題呢? –

-2

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL '-3' DAY);

使用引號在-3值

9

你可以在你的MySQL使用WHERE子句返回在最近創建的記錄每週7天:

created >= DATE_SUB(CURDATE(),INTERVAL 7 day)

也可以在減法中使用NOW()給出hh:mm:ss分辨率。所以回到過去的24小時內準確地創建(到秒)的記錄,你可以這樣做:

created >= DATE_SUB(NOW(),INTERVAL 1 day)

-2
SELECT DATEDIFF(NOW(),pickup_date) AS noofday 
FROM cir_order 
WHERE DATEDIFF(NOW(),pickup_date)>2; 

SELECT * 
FROM cir_order 
WHERE cir_order.`cir_date` >= DATE_ADD(CURDATE(), INTERVAL -10 DAY)