• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL 判断给定日期值(或时间段)所在星期的星期一和星期天的日期
    一、给定一个日期值,求出此日期所在星期的星期一和星期天的日期数据
    例如给定一个日期 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')
    您可能感兴趣的文章:
    • MySql 按时间段查询数据方法(实例说明)
    • Sql Server 分组统计并合计总数及WITH ROLLUP应用
    • SQL Server自动更新统计信息的基本算法
    • SQL 统计一个数据库中所有表记录的数量
    • SQL 实现某时间段的统计业务
    上一篇:在数据库‘master’中拒绝CREATE DATABASE权限问题的解决方法
    下一篇:SQL Server Bulk Insert 只需要部分字段时的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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