2017-06-30 57 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参数将具有相同的格式