php - MySQL 填充空日期

标签 php mysql date

我已经尝试解决这个问题有一段时间了,但找不到解决方案:我正在查询时间条目,结果如下:

2015-02-10: 13
2015-02-11: 16
2015-02-13: 11

正如您所看到的,我在数组中缺少了两天,因为这些天没有条目。我的 google-fu 为我带来了这个问题的一些解决方案,但似乎没有一个适用于我的特定代码:

SELECT
    DATE(time_entries.start) AS date,
    COUNT(time_entries.id) AS entries,
    SUM(CASE WHEN user_id = 4 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS me,
    SUM(CASE WHEN user_id = 3 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS ph
    FROM time_entries
    LEFT JOIN calendar_table
    ON time_entries.start=calendar_table.dt
    WHERE start BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURDATE()
    GROUP BY date
    ORDER BY date

我在以下帮助下创建了calendar_table:https://www.brianshowalter.com/calendar_tables

请帮忙! 最好的, 克里斯

最佳答案

尝试使用右连接。您的查询正在使用 time_entries 记录来匹配日历表,但什么也没找到,因为它们不存在。

通过使用右连接,您将首先使用calendar_table记录。

SELECT
    DATE(time_entries.start) AS date,
    COUNT(time_entries.id) AS entries,
    SUM(CASE WHEN user_id = 4 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS me,
    SUM(CASE WHEN user_id = 3 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS ph
    FROM time_entries
    RIGHT JOIN calendar_table
    ON time_entries.start=calendar_table.dt
    WHERE start BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURDATE()
    GROUP BY date
    ORDER BY date

关于php - MySQL 填充空日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350721/

相关文章:

MYSQL GROUP_CONCAT 在超过 2 个表中出现错误

c++ - 我想重载运算符 '=' 但在重载之后运算符没有将正确的信息传递给对象

mysql - 如何用日期范围填充表格?

php - 如果使用 ORM 层,将如何在 PHP 中进行单元测试?

php - 它不会在数据库中插入值

java - 如何将字节数组转换为 blob

php - 执行此 UPDATE 查询的最佳方法

javascript - 使用 php 调用 javascript 函数

php - 如何从 woocommerce_single_product_summary Hook 中删除标题?

java - 如何解析日期?