SQL 判断给定日期值(或时间段)所在星期的星期一
一、针对单一日期的星期查询功能
想象一下,我们手持一本日历,并标注了特定的日期,如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
编程语言
- SQL 判断给定日期值(或时间段)所在星期的星期一
- js显示文本框提示文字的方法
- JavaScript String 对象常用方法详解
- 百度地图去掉marker覆盖物或者去掉maker的label文字
- ASP.NET中Cookie的用法实例分析
- 解决在laravel中auth建立时候遇到的问题
- 阿里云ecs服务器中安装部署node.js的步骤
- php通过隐藏表单控件获取到前两个页面的url
- PHP使用array_multisort对多个数组或多维数组进行排
- PHP 提取图片img标记中的任意属性的简单实例
- PHP中file_get_contents函数抓取https地址出错的解决方
- PHP统计数值数组中出现频率最多的10个数字的方法
- 将JSON字符串转换成Map对象的方法
- php简单构造json多维数组的方法示例
- 使用BootStrap实现标签切换原理解析
- js注册时输入合法性验证方法