sql - 与日历比较查找缺失的日期

标签 sql sql-server datetime

我简短地解释一下问题。

select distinct  DATE from #Table where   DATE >='2016-01-01'

输出:

Date 
2016-11-23  
2016-11-22  
2016-11-21  
2016-11-19  
2016-11-18  

现在我需要找出缺失的日期,并与“2016”年的日历日期进行比较

即这里缺少日期“2016-11-20”。

我想要缺失日期的列表。

感谢您阅读本文。祝你有愉快的一天。

最佳答案

您需要生成日期并且必须找到丢失的日期。下面用递归 cte 我已经完成了

  ;WITH CTE AS
    (
    SELECT CONVERT(DATE,'2016-01-01') AS DATE1
    UNION ALL
    SELECT DATEADD(DD,1,DATE1) FROM CTE WHERE DATE1<'2016-12-31'
    )
    SELECT DATE1 MISSING_ONE FROM CTE
    EXCEPT 
    SELECT * FROM #TABLE1
    option(maxrecursion 0)

关于sql - 与日历比较查找缺失的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797748/

相关文章:

sql - 根据另一个表中的信息构建行更改的历史跟踪

ruby-on-rails - Rails -- 无法在表单中设置 date_select 的值

MySql 查询 - 按日期范围分组?

mysql - 按 t1.date 连接不相关的表(t2.startdate 和 t2.enddate 之间)

mysql - 使用 Coldfusion 检索 MySQL 数据库列名(带有表名)

sql-server - 如何使用 Slick plain SQL 和 SQL Server 返回自动生成的 ID

php - Laravel PDO 设置?

java.time.format.DateTimeParseException : Text could not be parsed at index 21

mysql - 合并两个查询的结果

c# - 如何从sql中的每组中选择20个随机问题?