mysql - 即使日期不在 MySQL 中,如何在 MySQL 中选择最近 30 天的日期?

标签 mysql

我的情况是,我需要获取过去 30 天的数据并获取所有日期,即使数据不在 mysql 中也是如此 给定日期。

我当前的查询是这样的。 lastUpdated 是时间戳列

SELECT Date(a.lastUpdated), count(*)
FROM table1 a
LEFT JOIN table2 b on (a.pgid = b.prod_id)
WHERE Date(lastUpdated) BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
GROUP BY Date(a.lastUpdated);

这个返回结果是这样的

Date(a.lastUpdated)   count(*)
2016-03-23              1
2016-03-24             14
2016-03-30             65
2016-03-31              1
2016-04-02              1

我的问题是即使数据不在 mysql 中,是否可以列出所有日期。或任何其他解决方法。我正在使用 PHP 7.0。

我环顾四周,但没有找到任何与我的要求相关的东西。

最佳答案

假设一个简化的示例表 table1 具有以下内容

CREATE TABLE table1 (lastUpdated datetime);
INSERT INTO table1 (lastUpdated) VALUES ('2016-03-23');
INSERT INTO table1 (lastUpdated) VALUES ('2016-03-24');
INSERT INTO table1 (lastUpdated) VALUES ('2016-03-30');
INSERT INTO table1 (lastUpdated) VALUES ('2016-03-31');
INSERT INTO table1 (lastUpdated) VALUES ('2016-04-02');
INSERT INTO table1 (lastUpdated) VALUES ('2016-03-31');

然后下面的 MySQL 语句将返回过去 30 天内的所有日期,其中 table1 中没有条目的计数为 0:

SELECT lastUpdated, count(*)-1 FROM (
    SELECT date(lastUpdated) as lastUpdated FROM table1 as t1
    UNION ALL 
    SELECT curdate() - interval a day AS lastUpdated FROM (
        select 0 as a union select 1 union select 2 union select 3 union
        select 4 union select 5 union select 6 union select 7 union
        select 8 union select 9 union select 10 union select 11 union
        select 12 union select 13 union select 14 union select 15 union 
        select 16 union select 17 union select 18 union select 19 union
        select 20 union select 21 union select 22 union select 23 union
        select 24 union select 25 union select 26 union select 27 union
        select 28 union select 29
    ) as t2
) as t3 GROUP BY lastUpdated;

关于mysql - 即使日期不在 MySQL 中,如何在 MySQL 中选择最近 30 天的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36377941/

相关文章:

php - (Mysql - 批量更新

MySQL distinct+sort 查询性能问题

php购物车-按选择分组并获得总数

mysql - 获取 mysql 表中按月和年分组的行总数

mysql - 删除行导致mysql错误

php - 如何将 MySQL 行拆分为连接中每个表的单独变量

mysql - Kafka MySQL 作为消费者

mysql - 锁如何在 MySQL 中用于两个插入?

mysql - 在 Excel 上分析 MySQL 数据

python - 我应该如何更改我的 SQLAlchemy 查询?