SQL 判断给定日期值(或时间段)所在星期的星期一

网络编程 2025-03-23 18:24www.168986.cn编程入门

一、针对单一日期的星期查询功能

想象一下,我们手持一本日历,并标注了特定的日期,如2010年9月1日。我们的任务是要找到这一天所在星期的星期一是哪一天,以及星期天的日期。为此,我们创建了一个名为“My_OneDay_GetWeekFirstAndEndDay”的函数。

函数代码示例:

```sql

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

```

测试时,只需输入特定的日期,如2010-09-01,函数将返回该日期所在星期的星期一的日期和星期天的日期。

二、针对日期范围的多星期查询功能

接下来,我们扩展了上述功能。用户现在可以提供两个参数:开始日期和结束日期。我们的任务是要找出这个时间段内的所有星期的星期一的日期和星期天的日期,并对其进行排序。例如,开始日期是2011-09-01,结束日期是2011-10-06。我们将得到如下的星期表。为此,我们创建了名为“MY_Range_GetWeekFirstAndEndDays”的函数。

函数代码示例:

```sql

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 DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 0) AS FirstDAy ) a

上一篇:js显示文本框提示文字的方法 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by