sqlserver中如何查询出连续日期记录的代码

来源:asp之家 时间:2011-09-30 11:16:56 

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


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天,或任何一天。

标签:连续日期,记录
0
投稿

猜你喜欢

  • MySQL数据库锁机制的相关原理简介

    2010-04-22 15:34:00
  • 用css3-tranistions实现平滑过渡

    2009-12-23 19:24:00
  • 用python读写excel的方法

    2021-11-11 10:10:50
  • vue设置导航栏、侧边栏为公共页面的例子

    2024-05-29 22:25:07
  • Python HTTP客户端自定义Cookie实现实例

    2023-12-16 01:19:30
  • golang接口IP限流,IP黑名单,IP白名单的实例

    2024-04-25 15:18:14
  • web2.0中流行的设计元素:颜色

    2007-12-10 12:16:00
  • Python中生成器和yield语句的用法详解

    2022-06-04 16:56:19
  • python paramiko远程服务器终端操作过程解析

    2022-10-08 00:50:14
  • python列表[list]和元组(tuple)详情

    2022-05-23 01:14:31
  • Python配置mysql的教程(推荐)

    2024-01-21 00:40:19
  • python抓取网站的图片并下载到本地的方法

    2022-05-19 23:45:08
  • Perl集群配置管理系统Rex简明手册

    2023-07-15 20:00:34
  • 解决python3中cv2读取中文路径的问题

    2023-05-17 18:52:10
  • js实现简单的放大镜效果

    2024-04-30 08:52:03
  • Python3中map()、reduce()、filter()的用法详解

    2024-01-03 01:27:23
  • Spring Boot中使用Spring-data-jpa实现数据库增删查改

    2024-01-28 09:41:28
  • jQuery实现网页抖动的菜单抖动效果

    2024-04-19 10:19:04
  • python编程实现清理微信重复缓存文件

    2022-06-20 02:12:12
  • 简单介绍Python中的JSON模块

    2023-12-30 00:16:29
  • asp之家 网络编程 m.aspxhome.com