2013-01-16 33 views
1

如何從服務器的數據庫獲取一天的舊記錄。我有使用日期時間插入記錄。下面是記錄的樣子。從數據庫獲取一天的舊記錄

2013-01-15 23:44:02 

我有使用的strtotime(「 - 19天」),但它返回本地系統再寄一次希望得到一個天大的記錄,並做一些東西,在條件..

感謝名單提前..

+0

的strtotime是從PHP服務器的時候,你應該使用類似的日期時間函數在mysql中做的比較 – ajreal

回答

0

您將使用sql查詢將其歸檔。

SELECT * FROM tablename WHERE DATE(datefield)=DATE_ADD(CURDATE(),INTERVAL 1 DAY) 

CURDATE()將返回當前Mysql Server時間。

4
where date(date_column) = DATE_sub(NOW(), INTERVAL 1 DAY); 
+0

有沒有' DATE_SUM'功能 –

+0

這裏最好的答案。 – skrilled

3

使用DATE_ADD

SELECT * 
FROM tablename 
WHERE DATE(dateCol) = DATE_ADD(CURDATE(),INTERVAL -1 DAY) 
+0

你是不是指-1天,還是我誤解了OP? –

+0

@lc。你是對的。 –

+0

SELECT * FROM email_record WHERE DATE(sent_mail)= DATE_ADD(CURDATE(),INTERVAL -1 DAY)。有許多一天的記錄,但是這個查詢給了我空的結果集。 – Jimmy

0

您可以使用此功能DATE_SUB(日期,INTERVAL expr的類型)

http://www.w3schools.com/sql/func_date_sub.asp

在W3Schools的

提供

示例假設我們有以下的「訂單」表:

Columns: OrderId, ProductName, OrderDate 
Values: 1, Jarlsberg Cheese, 2008-11-11 13:23:44.657 

現在,我們希望從「訂購日期」日期減去5天。

我們使用下面的SELECT語句:

SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate 
FROM Orders 
0
SELECT * from table WHERE datefield < DATE_SUB(NOW(), INTERVAL 1 DAY) 
+0

你正在比較一個字符串。 –

+0

@JW這個查詢工作正常。日期列以dateTime格式顯示。 – cartina

+0

現在,但你以前的答案不會。你正在關注這個''DATE_SUB(NOW(),INTERVAL 1 DAY)'' –

0
$yesterday = strtotime('Y-m-d h:i:s','yesterday'); 
SELECT * FROM tablename WHERE datefield = '$yesterday'