像这个问题有很多问题和答案,但我找不到任何在 MYSQL 查询中实际使用它的问题和答案。我需要根据从现在到表中某个日期之间的特定天数来查询数据库。我现在有一些方法可以在 mysql 查询中进行数学运算,但不太知道如何开始。
任何建议如何使用 PHP 和 mysql 做到这一点?
抱歉没有提及,我的日期字段是 unix 时间戳。那么我该如何使用这种格式来实现呢?
像这个问题有很多问题和答案,但我找不到任何在 MYSQL 查询中实际使用它的问题和答案。我需要根据从现在到表中某个日期之间的特定天数来查询数据库。我现在有一些方法可以在 mysql 查询中进行数学运算,但不太知道如何开始。
任何建议如何使用 PHP 和 mysql 做到这一点?
抱歉没有提及,我的日期字段是 unix 时间戳。那么我该如何使用这种格式来实现呢?
datetime
我假设您正在为字段寻找类似的东西:
SELECT *
FROM table
WHERE datetime_field BETWEEN (NOW() - INTERVAL 2 DAY) AND NOW()
对日期字段稍作修改
SELECT *
FROM table
WHERE date_field BETWEEN (DATE(NOW()) - INTERVAL 2 DAY) AND DATE(NOW())
出于多种原因,您不应该使用 unix 时间戳字段来存储日期时间。但如果你真的坚持这样做。
SELECT *
FROM table
WHERE date_field BETWEEN UNIX_TIMESTAMP(NOW() - INTERVAL 2 DAY) AND UNIX_TIMESTAMP(NOW())
确保WHERE
子句中的字段上有索引。
你的意思是像 DateDiff 函数?
SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate
http://www.w3schools.com/sql/func_datediff_mysql.asp
$sql = "SELECT DATEDIFF('".$startDate."', '".$endDate."') AS DiffDate";
然后通过 PDO 或 mysqli_ 函数运行它。
在 PHP 中,您可以这样做:
$date1 = '1348117200000'; //From table for date 09/20/2012
$date2 = time(); //Current time
$diffDate = $date1 - $date2;
然后在您的查询中使用 $diffDate 。
$sql = 'SELECT * FROM DATE_TABLE WHERE DATE_FIELD = ' . $diffDate;