判断给定时间段所在的星期一和星期天的日期

最近报表要用到一项功能,需要把数据源根据记录发生日期所在的星期序列进行分组。因此就写了两个相关SQL Function进行调用。

一、给定一个日期值,求出此日期所在星期的星期一和星期天的日期数据

例如给定一个日期 2010-09-01,求出它所在星期的星期一是2010-08-30,星期天是2010-09-05

 Function创建如下:

  1. USE [MSSQL] 
  2. GO 
  3. SET ANSI_NULLS ON 
  4. GO 
  5. SET QUOTED_IDENTIFIER ON 
  6. GO 
  7. CREATE FUNCTION [dbo].[My_OneDay_GetWeekFirstAndEndDay](@tmpDate DATETIME) 
  8. RETURNS  @tmpTable TABLE(FirstDay DATETIME , EndDay DATETIME) 
  9. AS 
  10. BEGIN 
  11.     INSERT INTO @tmpTable 
  12.     SELECT a.FirstDay,b.EndDay FROM (     
  13.         SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 0) AS FirstDAy 
  14.     ) a 
  15.     LEFT JOIN ( 
  16.         SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 6) AS EndDay 
  17.     ) b 
  18.     ON a.ID = b.ID 
  19.     RETURN 
  20. END 

Function测试:

  1. SELECT * from  My_OneDay_GetWeekFirstAndEndDay('2010-09-01'

二、以上面单个日期搜索为基础,由用户输入两个参数,一个是开始日期,一个结束日期,根据这两个参数,求出在此时期段内的所有星期的星期一和星期天的日期表并排序。

例如开始日期是2011-09-01,结束日期是2011-10-06,我们就可以得到此星期表如下:

  1. WeekOrder              FirstDay                                EndDay 
  2.  1               2011-08-29 00:00:00.000  2011-09-04 00:00:00.000 
  3.  2               2011-09-05 00:00:00.000  2011-09-11 00:00:00.000 
  4.  3               2011-09-12 00:00:00.000  2011-09-18 00:00:00.000 
  5.  4               2011-09-19 00:00:00.000  2011-09-25 00:00:00.000 
  6.  5               2011-09-26 00:00:00.000  2011-10-02 00:00:00.000 
  7.  6               2011-10-03 00:00:00.000  2011-10-09 00:00:00.000 

Function创建如下:

  1. USE [MSSQL] 
  2. GO 
  3. SET ANSI_NULLS ON 
  4. GO 
  5. SET QUOTED_IDENTIFIER ON 
  6. GO 
  7. CREATE FUNCTION [dbo].[MY_Range_GetWeekFirstAndEndDays](@tmpDateSTART DATETIME,@tmpDateEND DATETIME) 
  8. RETURNS  @tmpTable TABLE(WeekOrder INT,FirstDay DATETIME , EndDay DATETIME) 
  9. AS 
  10. BEGIN    
  11.  DECLARE   @tmpDate   DATETIME 
  12.  DECLARE   @index         INT 
  13.  SET       @tmpDate=@tmpDateSTART 
  14.  SET       @index=1 
  15.      WHILE     @tmpDate <=@tmpDateEND 
  16.         BEGIN  
  17.              INSERT INTO @tmpTable 
  18.                 SELECT @index,a.FirstDay,b.EndDay FROM (     
  19.                     SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 0) AS FirstDAy) a 
  20.                 LEFT JOIN ( 
  21.                     SELECT 1 AS ID,DATEADD(wk, DATEDIFF(wk,0,@tmpDate), 6) AS EndDay) b 
  22.                 ON a.ID = b.ID 
  23.  
  24.           SET   @tmpDate=DATEADD(DAY,7,@tmpDate) 
  25.           SET   @index=@index+1 
  26.          END  
  27.      RETURN 
  28. END 

Function测试:

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

原文链接:http://www.cnblogs.com/wsdj-ITtech/archive/2011/10/06/2199736.html

【编辑推荐】

  1. 常见数据库的分页实现方案
  2. Oracle分页小谈
  3. 谈谈Java调用SQL Server分页存储过程
  4. 浅述asp.net海量分页数据存储过程
  5. 证明DataReader分页的可行性

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/265397.html<

(0)
运维的头像运维
上一篇2025-05-05 11:39
下一篇 2025-05-05 11:40

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注