2017-06-30 56 views
1

我的mySQL表有一個使用類型TIMESTAMP的列date_added。在表中,當我使用可視化編輯器時,時間戳看起來像這樣2017-06-17 20:08:58mySQL/PHP查詢不受日期限制

在我的PHP中,我試圖只從一週前開始獲得有date_added的行。所以,我在做這樣的事情:

$weekago = strtotime("-1 week"); 
$sql = "SELECT * from myTable where date_added >= $weekago"; 

$weekago返回一個劃時代的時間,如:1498748730

如果我做一個直MySQL的查詢是這樣的:

SELECT * FROM myTable其中DATE_ADDED> 1498748730

在這兩種情況下,我只是得到所有行返回(是的,有些行從一個多星期前有date_added)。

時間戳格式不匹配的問題是什麼?

回答

3

嘗試使用此查詢:

SELECT * FROM myTable WHERE date_added >= NOW() - INTERVAL 1 WEEK 

您當前的嘗試比較時代時間以秒爲單位對日期列。這沒有任何意義。正如@HuyTrịnh正確地建議的那樣,您可以將date_added包裝在UNIX_TIMESTAMP中,將其轉換爲自epoch以來的秒數。但是這種方式在純MySQL中並不是那麼好:

SELECT * 
FROM myTable 
WHERE UNIX_TIMESTAMP(date_added) >= UNIX_TIMESTAMP() - 7*24*60*60 
+0

謝謝!這個竅門! – jonmrich

2

試試這個:

$weekago = strtotime("-1 week"); 
$sql = "SELECT * from myTable where UNIX_TIMESTAMP(date_added) >= $weekago"; 

這將轉換DATE_ADDED爲timestamp所以2參數將具有相同的格式