ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

SQL: Åжϸø¶¨ÈÕÆÚÖµ(»òʱ¼ä¶Î)ËùÔÚÐÇÆÚµÄÐÇÆÚÒ»ºÍÐÇÆÚÌìµÄÈÕÆÚ
2014-11-24 02:59:35 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:3´Î
Tags£ºSQL: ÅÐ¶Ï ÈÕÆÚ Ê±¼ä¶Î ËùÔÚ ÐÇÆÚ ÐÇÆÚÒ» ÐÇÆÚÌì

×î½ü±¨±íÒªÓõ½Ò»ÏÄÜ£¬ÐèÒª°ÑÊý¾ÝÔ´¸ù¾Ý¼Ç¼·¢ÉúÈÕÆÚËùÔÚµÄÐÇÆÚÐòÁнøÐзÖ×é¡£Òò´Ë¾ÍдÁËÁ½¸öÏà¹ØSQL Function½øÐе÷Óá£

Ò»¡¢¸ø¶¨Ò»¸öÈÕÆÚÖµ£¬Çó³ö´ËÈÕÆÚËùÔÚÐÇÆÚµÄÐÇÆÚÒ»ºÍÐÇÆÚÌìµÄÈÕÆÚÊý¾Ý

ÀýÈç¸ø¶¨Ò»¸öÈÕÆÚ2010-09-01£¬Çó³öËüËùÔÚÐÇÆÚµÄÐÇÆÚÒ»ÊÇ2010-08-30£¬ÐÇÆÚÌìÊÇ2010-09-05

Function´´½¨ÈçÏÂ:

USE [MSSQL]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[My_OneDay_GetWeekFirstAndEndDay](@tmpDate DATETIME)

RETURNS @tmpTable TABLE(FirstDay DATETIME , EndDay DATETIME)

AS

BEGIN

INSERT INTO @tmpTable

SELECT a.FirstDay,b.EndDay FROM (

SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 0) AS FirstDAy

) a

LEFT JOIN (

SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 6) AS EndDay

) b

ON a.ID = b.ID

RETURN

END

Function²âÊÔ:

SELECT * from My_OneDay_GetWeekFirstAndEndDay('2010-09-01')

¶þ¡¢ÒÔÉÏÃæµ¥¸öÈÕÆÚËÑË÷Ϊ»ù´¡£¬ÓÉÓû§ÊäÈëÁ½¸ö²ÎÊý£¬Ò»¸öÊÇ¿ªÊ¼ÈÕÆÚ£¬Ò»¸ö½áÊøÈÕÆÚ£¬¸ù¾ÝÕâÁ½¸ö²ÎÊý£¬Çó³öÔÚ´ËʱÆÚ¶ÎÄÚµÄËùÓÐÐÇÆÚµÄÐÇÆÚÒ»ºÍÐÇÆÚÌìµÄÈÕÆÚ±í²¢ÅÅÐò¡£

ÀýÈ翪ʼÈÕÆÚÊÇ2011-09-01,½áÊøÈÕÆÚÊÇ2011-10-06£¬ÎÒÃǾͿÉÒԵõ½´ËÐÇÆÚ±íÈçÏÂ:

WeekOrder FirstDay EndDay

1 2011-08-29 00:00:00.000 2011-09-04 00:00:00.000

2 2011-09-05 00:00:00.000 2011-09-11 00:00:00.000

3 2011-09-12 00:00:00.000 2011-09-18 00:00:00.000

4 2011-09-19 00:00:00.000 2011-09-25 00:00:00.000

5 2011-09-26 00:00:00.000 2011-10-02 00:00:00.000

6 2011-10-03 00:00:00.000 2011-10-09 00:00:00.000

Function´´½¨ÈçÏÂ:

USE [MSSQL]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[MY_Range_GetWeekFirstAndEndDays](@tmpDateSTART DATETIME,@tmpDateEND DATETIME)

RETURNS @tmpTable TABLE(WeekOrder INT,FirstDay DATETIME , EndDay DATETIME)

AS

BEGIN

DECLARE @tmpDate DATETIME

DECLARE @index INT

SET @tmpDate=@tmpDateSTART

SET @index=1

WHILE @tmpDate <=@tmpDateEND

BEGIN

INSERT INTO @tmpTable

SELECT @index,a.FirstDay,b.EndDay FROM (

SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 0) AS FirstDAy) a

LEFT JOIN (

SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 6) AS EndDay) b

ON a.ID = b.ID

SET @tmpDate=DATEADD(DAY,7,@tmpDate)

SET @index=@index+1

END

RETURN

END

Function²âÊÔ:

SELECT * from My_Range_GetWeekFirstAndEndDays('2011-09-01','2011-10-06')

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºSQL:¸ù¾Ý¸ø¶¨µÄ·Ö¸ô·û£¬·Ö½â×Ö·û´® ÏÂһƪ£ºSQL Server 2005°²×°Ê±´íÎó¼òÎö

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)