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

时间:2015-12-03 13:22:56

标签: 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

这是表结构的截图

Table structure

3 个答案:

答案 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;

相关信息:

答案 1 :(得分:0)

您可以通过添加ORDER BY date_field_name DESC子句和LIMIT 30

来选择30条最近的记录

答案 2 :(得分:0)

尝试这样的事情:

->find($id)

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

DAY