查找缺少的日期(PostgreSQL)

Aka*_*vda 9 postgresql

我有一个包含d_date列的表.在此列中,仅包含日期值.

我的问题是"我想从这个专栏(d_date)中找到缺少的日期".

示例:此列包含从"2007年1月1日"到"2007年1月7日"的日期,然后我想找到"2007年1月1日"到"2007年1月10日"之间缺少日期,我的结果应该是"2007年1月8日","2007年1月9日","2007年1月10日".

那么,我怎样才能得到这个结果呢?

Sim*_*stö 12

您可以将使用该函数创建的日期系列与generate_series(start, stop, step interval) 表中的日期进行比较:

SELECT * FROM generate_series('2007-01-01', '2007-01-10', interval '1 day') AS dates
  WHERE dates NOT IN (SELECT d_date FROM your_table);
Run Code Online (Sandbox Code Playgroud)

有关generate_seriesPostgreSQL文档功能的更多信息:9.24.设置返回功能.