视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sqlserver中如何查询出连续日期记录的代码
2020-11-09 07:11:17 责编:小采
文档


有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下:


Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。
代码如下:
--创建一个临时表,将会存储连续日期的记录
CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME)
DECLARE @sD DATETIME --开始日期
DECLARE @eD DATETIME --结束日期
--在记录中,找出开始与结束日期
SELECT @sD = MIN([SDATE]), @eD = MAX([SDATE]) FROM [TT]
DECLARE @N INT = 0 --宣告一个变量,存储累记录数
--循环日期
WHILE (@sD <= @eD)
BEGIN
--如果存在
IF EXISTS (SELECT TOP 1 1 FROM [TT] WHERE [SDATE] = @sD)
BEGIN
SET @sD = DATEADD(day,1,@sD) --日期加1天
SET @N = @N + 1 --记录加1
END
ELSE --如果不存在
BEGIN
IF (@N >= 3) --判断是否大于或等于3
INSERT INTO #temp SELECT [IDD],[SDATE] FROM [TT] WHERE [SDATE] BETWEEN DATEADD(day,-@N,@sD) AND @sD
--日期加1天
SET @sD = DATEADD(day,1,@sD)
SET @N = 0 --初始化为0
END
END
--列出符合条件的记录
SELECT * FROM #temp

上面的方法,实际可以把IF (@N >= 3)这句中的3改为一个变量,这样可以方便以后的程序扩展,某一天需要改为连续2天,4天,5天,或任何一天。

您可能感兴趣的文章:

  • SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
  • SQLserver中用convert函数转换日期格式的方法
  • SQL Server 日期相关资料详细介绍
  • sqlserver获取当前日期的最大时间值
  • sql 查询本年、本月、本日记录的语句,附SQL日期函数
  • Sqlserver 常用日期时间函数
  • 根据日期知道当天是星期几的手动计算方法
  • 按日期选择最晚日期与最早日期对应的数的差值
  • MSSQL 计算两个日期相差的工作天数的语句
  • SQL Server自动生成日期加数字的序列号
  • SQL 返回期间内的所有日期
  • 数据库 日期加减处理
  • sql语句中如何将datetime格式的日期转换为yy-mm-dd格式
  • 在SQL中使用convert函数进行日期的查询的代码
  • SQL Server日期计算
  • SQL Server各种日期计算方法(收藏)
  • SqlServer中的日期与时间函数
  • 下载本文
    显示全文
    专题