gpt4 book ai didi

mysql - 如何获取间隔日期列表

转载 作者:行者123 更新时间:2023-11-29 12:03:54 25 4
gpt4 key购买 nike

我有一个数据库表,存储一天的值(以日期时间形式)。现在我想找到那些表中不存在条目的日子。

示例:

2011-11-15 00:00:00 | 10.00
2011-11-17 00:00:00 | 20.00
2011-11-18 00:00:00 | 30.00

2011-11-16 00:00:00 缺失,因此该日期应该是从 SELECT 语句返回的日期。

我试过了

WITH days(d) AS (
SELECT i::timestamp(0)
FROM generate_series('2011-11-16 00:00:00', '2015-08-09 13:00:00', interval '1 day') d(i)
)
SELECT d FROM
days
LEFT JOIN tgeg_maand ON d = Datum_Maand
WHERE tgeg_maand IS NULL;

但是MySQL似乎不理解“WITH”语句。

非常感谢,如果问题太简单,抱歉!

最佳答案

您的问题标记为 MySQL,但您的语法是 Postgres。在 MySQL(或任何其他数据库)中执行您想要的操作的一种方法是使用 not contains:

select m.*
from tgeg_maand m
where not exists (select 1
from tgeg_maand m2
where m.Datum_Maand = date_add(m2.Datum_Maand, interval 1 day)
) and
exists (select 1
from tgeg_maand m2
where m2.Datum_Maand < m.Datum_Maand
);

第一个条件(不存在)表示前一天没有记录。第二个条件只是过滤掉第一条记录。为了提高性能,您需要在 tgeg_maand(Datum_Maand) 上建立索引。注意:还有其他类似的方式来表达相同的逻辑。

关于mysql - 如何获取间隔日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31902047/

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