Php 在特定时间范围内从两个表中选择sql

Php 在特定时间范围内从两个表中选择sql,php,sql,Php,Sql,我有一个工作的代码,但它没有显示我想要的时间框架。。。它显示了完整的列表。。。我希望能够查看过去30天左右的信息,而不是整个数据库,请提前帮助和感谢: 以下是我到目前为止的情况: SELECT t1.* FROM `users` t1 LEFT JOIN `drive_routes` t2 ON t1.id = t2.driver WHERE t2.driver IS NULL AND suspended = 0 AND quit = 0 AND deleted = 0 下面是表格

我有一个工作的代码,但它没有显示我想要的时间框架。。。它显示了完整的列表。。。我希望能够查看过去30天左右的信息,而不是整个数据库,请提前帮助和感谢: 以下是我到目前为止的情况:

SELECT t1.*
FROM `users` t1
    LEFT JOIN `drive_routes` t2 ON t1.id = t2.driver
WHERE t2.driver IS NULL
  AND suspended = 0 AND quit = 0 AND deleted = 0
下面是表格结构的屏幕截图


您可以通过添加
按日期排序字段\u name DESC
子句和
限制30
来选择30条最近的记录

where `dateField` >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
您还可以使用
DAY

where `dateField` >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)

创建一个变量
截止日期
,其值为
今天
-
30天


然后添加
和drive\u routes.timestamp哪个表/列包含datetime值?谢谢jarth,我刚刚修复了drive\u routes是一个时间戳值的问题,用您正在使用的数据库标记您的问题。drive\u routes中的哪一列?(它是哪种数据类型?)啊,明白了!表中是否有带有时间戳的字段?是的,我知道该子句,但我想要30个days@MrJohnDowe
DATE\u SUB(CURDATE(),INTERVAL 30 DAY)
将给出类似于“2015-11-03”的日期。如果要存储时间戳,请将此日期转换为时间戳,然后进行比较。您可以使用
UNIX\u timestamp
执行此操作。
set @cutoff_date = DATE_SUB(CURDATE(), INTERVAL 30 DAY));

   SELECT t1.*
     FROM `users` t1
LEFT JOIN `drive_routes` t2 ON t2.id = t2.driver
    WHERE t2.driver IS NULL
      AND suspended = 0
      AND quit = 0
      AND deleted = 0
      AND t2.timestamp >= @cutoff_date;