Php 在特定时间范围内从两个表中选择sql
我有一个工作的代码,但它没有显示我想要的时间框架。。。它显示了完整的列表。。。我希望能够查看过去30天左右的信息,而不是整个数据库,请提前帮助和感谢: 以下是我到目前为止的情况: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 下面是表格
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@MrJohnDoweDATE\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;