gpt4 book ai didi

mysql - 从 MySQL 中的表中选择缺失的日期

转载 作者:行者123 更新时间:2023-11-28 23:16:36 24 4
gpt4 key购买 nike

我正在考虑什么是完成我想要完成的事情的最佳方式。正如标题所说,我在 mysql 中有一个缺少日期的表,如下所示:

+------------+
| 2015-09-01 |
| 2015-09-03 |
| 2015-09-05 |
| 2015-09-06 |
| 2015-09-07 |
+------------+

我想选择它们来为它们分配另一个具有 null 值的列,所以如果我还想选择缺失的日期(在我的例子中是第 2 天和第 4 天),我有哪些选择?我想制作一个“日历”表并选择左连接和使用 not in,但这意味着我必须用大量日期填充它(以防有人出于某种原因我想选择 2500 年或 1800 年的数据,但我不想这样)。

出于性能方面的考虑,我不喜欢使用日历表的选项,但这也带来了另一个问题:如果我仍然使用日历表,并限制人们选择过去或将来的日期(因此让我不必再保留数百年的 margin ,以防某些疯狂的灵魂决定从那里选择东西),我怎样才能使表格自行填充,使其具有当前日期的日期,而无需我手动插入当前日期?

触发器/函数可以每天运行并在其中插入当前日期吗?

编辑:我的意图是将表格用于 chartjs,因此它可以在缺少数据(空值)的地方有“漏洞”。

最佳答案

检查这个:

select this_date,given_dates from
(SELECT ADDDATE('2015-09-01', INTERVAL @i:=@i+1 DAY) AS this_date
FROM (
SELECT a.a
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
) a
JOIN (SELECT @i := -1) r1
WHERE
@i < DATEDIFF('2018-01-30', '2015-09-01')) as a

left JOIN

(select given_dates from
(select '2015-09-01' as given_dates union all
select '2015-09-03' union all
select '2015-09-05' union all
select '2015-09-06' union all
select '2015-09-07') as a) as b
on a.this_date = b.given_dates

示例结果:

2015-09-01  2015-09-01  
2015-09-02
2015-09-03 2015-09-03
2015-09-04
2015-09-05 2015-09-05
2015-09-06 2015-09-06
2015-09-07 2015-09-07
2015-09-08
2015-09-09
2015-09-10
2015-09-11

你可以很容易地得到它的空值。

关于mysql - 从 MySQL 中的表中选择缺失的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com