sqlserver中若何查詢出持續日期記載的代碼。本站提示廣大學習愛好者:(sqlserver中若何查詢出持續日期記載的代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是sqlserver中若何查詢出持續日期記載的代碼正文
有在服裝論壇t.vhao.net上看到一帖,《就教查詢出持續日期記載的辦法》,截圖以下:
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天,或任何一天。