postgresql - 查找缺失的日期 (PostgreSQL)

标签 postgresql

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

我的问题是“我想从此列 (d_date) 中找到缺失的日期”。

例子: 此列包含从“1-Jan-2007”到“7-Jan-2007”的日期 然后我想找到“2007 年 1 月 1 日”到“2007 年 1 月 10 日”之间丢失的日期 我的结果应该是“8-Jan-2007”、“9-Jan-2007”、“10-Jan-2007”。

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

最佳答案

您可以将使用函数 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);

有关函数 generate_series 的更多信息来自 PostgreSQL 文档:9.24. Set Returning Functions .

关于postgresql - 查找缺失的日期 (PostgreSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583379/

相关文章:

sql - 在 Postgres 的数组列中使用 UPCASE 或 Regexp

ruby-on-rails - 如何仅根据日期和月份获取用户的生日

python - 使用 django 检查 postgres 数据库是否存在 - 抛出操作系统错误。

java - Elasticsearch 不处理 liquibase 加载的数据

sql - 优化 Postgres 删除孤立记录

bash - Postgres - 在 bash 中测试数据库连接

javascript - 有没有办法在 Op.op sequelize 中循环遍历许多参数的对象

hibernate - OSGI 与 hibernate : "No suitable driver found"

sql - 对查询的输出应用 DENSE_RANK()

python - 将触发器添加到 SQLAlchemy 基类