sql 请问如何判断某个时间段内,缺失的时间,比如22年1月1号到30号,之间缺失了哪几天

sql 请问如何判断某个时间段内,缺失的时间,比如22年1月1号到30号,之间缺失了哪几天

WITH Dates(Date) AS
(
    SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, '2022-03-01') AS Date
    UNION ALL
    SELECT DATEADD(day, 1, Date) AS Date
    FROM Dates
    WHERE Date <= '2022-03-31'
)
SELECT convert(char(10),d.Date,126), r.累计金额
FROM Dates d
LEFT JOIN test_date r ON d.Date = r.单据日期 where isnull(r.累计金额,'')='' and d.Date >='2022-03-01' and d.Date <= '2022-03-31'

r.累计金额为null 的就是缺失的日期,结果如下:

img

先查出来这个范围内的每一天数据,再看那些天数没有在你的数据里边就行了呀

你的是什么数据库?MySQL吗?有表结构和数据吗?

使用datediff(datepart,startdate,enddate),这个函数可以获取,select datediff(day,'2004-01-01',getdate())

在sqlserver里可以用datediff函数来实现

select datediff(day, 开始日期,结束日期); --两日期间隔天 
select datediff(hour, 开始日期,结束日期); --两日期间隔小时 
select datediff(minute, 开始日期,结束日期); --两日期间隔分 
select datediff(second, 开始日期,结束日期); --两日期间隔秒