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 的就是缺失的日期,结果如下:
先查出来这个范围内的每一天数据,再看那些天数没有在你的数据里边就行了呀
你的是什么数据库?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, 开始日期,结束日期); --两日期间隔秒