我有一个可行的代码,但它没有显示我想要的时间范围...它显示了完整的列表...我希望能够查看最近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
这是表结构的截图
答案 0 :(得分:1)
创建一个变量cutoff_date
,其值为today
- 30 days
。
然后将AND drive_routes.timestamp <= cutoff_date
添加到WHERE
子句。
如果您添加了正在使用的数据库系统,我可以将其更新为更具体。
修改强>
编辑2:我测试了它,这应该可行。
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;
相关信息:
DATE_SUB()
,CURDATE()
)答案 1 :(得分:0)
您可以通过添加ORDER BY date_field_name DESC
子句和LIMIT 30
答案 2 :(得分:0)
尝试这样的事情:
->find($id)
您也可以使用where `dateField` >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
:
DAY