`
lengyue_dick
  • 浏览: 84584 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

SQL 计算在一段时间内某周几(如星期一)的所有日期

阅读更多
SQL 计算在一段时间内某周几(如星期一)的所有日期
2008-08-27 04:05 P.M.

设计方法:先提取第1个星期一,然后就是循环+7。难点就是怎么样提取第1个星期一。
/*
功能: 计算在某一段时间内某周几(如星期一)的所有日期
设计:OK_008
时间:2006-10
*/
DECLARE @Date datetime
DECLARE @StartDate datetime
DECLARE @EndDate datetime
DECLARE @WeekDay int
DECLARE @i int

SET DATEFIRST 7            --设置每周的第一天
SET @StartDate='2006-01-01'    --统计的开始日期
SET @EndDate='2006-12-31'    --统计的结束日期
SET @WeekDay=2            --根据实际的@@DATEFIRST而定,一般默认是7,如 @StartDate='2006-01-01'时候, @WeekDay=3表示星期二
SET @i=DATEPART(weekday,@StartDate)
PRINT '每周的第1天设置@@DATEFIRST:    '+CAST(@@DATEFIRST AS nvarchar(1))
PRINT '开始日期对应一周的第几天:        '+CAST(@i AS nvarchar(1))
IF(@i<=@WeekDay AND @i<7)
    SET @i=@WeekDay-@i   
ELSE IF(@i<=@WeekDay AND @i=7)
    SET @i=@i-@WeekDay
ELSE
    SET @i=@@DATEFIRST-@i+@WeekDay

SET @Date=DATEADD(day,@i,@StartDate)
WHILE @Date<=@EndDate
    BEGIN
        IF(@StartDate<=@Date) PRINT CONVERT(nvarchar(10),@Date,121)
        SET @Date=DATEADD(Week,1,@Date)
    END
GO

/* ==============运行结果================*/
/*
每周的第1天设置@@DATEFIRST:    7
开始日期对应一周的第几天:        1
2006-01-02
2006-01-09
... ...
2006-12-18
2006-12-25
分享到:
评论

相关推荐

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

    本文将深入探讨如何利用T-SQL(Microsoft SQL Server的SQL方言)来确定给定日期值所在星期的星期一和星期天的日期。这涉及到对日期函数`DATEADD`和`DATEDIFF`的运用,以及创建自定义函数来方便复用。 首先,让我们...

    sql中日期函数大全(附详细的例子)

    SQL日期函数是数据库管理系统中用于处理日期和时间的函数,以下是SQL日期函数大全,涵盖了几乎所有的时间操作函数,并提供了详细的例子和执行结果分析。 1. 获取当前系统日期和时间 使用 `GETDATE()` 函数可以获取...

    sql server 时间查询

    ### SQL Server 时间查询知识点详解 #### 1. 查询当天数据 **语法:** ```sql ...通过上述内容可以看出,在SQL Server中处理日期和时间是非常灵活和强大的,这些操作对于数据分析和报告制作非常重要。

    Oracle 获得某日期属于该前月中的第几个自然周

    自然周通常是指一周的第一天为周一,到第七天为周日的一段时间。Oracle数据库默认的星期首日是Sunday,但可以通过`ALTER SESSION`语句改变。 要获取某个日期属于前一个月的第几个自然周,我们首先需要确定该日期...

    php返回当前日期或者指定日期是周几

    - 查询特定时间段(如当天、本周、本月等)的数据,通常需要结合数据库操作,使用 SQL 查询语句来完成,例如 `WHERE date_column BETWEEN start_date AND end_date`。 了解这些知识点后,开发者可以轻松地在PHP中...

    通用机房计费存储过程

    根据上述步骤获取到的课程信息,可以计算学生在非上课时间段内的实际使用时间,并据此计算费用。 ```sql if ((select count(*) from #tempcharge) = 0) insert into #tempcharge values (@classid, convert...

    oracle 取某个时间段的数据(每周几的上午几点到几点)

    在Oracle数据库中,查询特定时间段内的数据,特别是按周几的特定时段,是常见的需求。以下是如何使用SQL语句来实现这一目标。 首先,我们关注的是取某个时间段的数据,特别是每周几的上午几点到几点。这通常涉及到...

    hdongix c++

    2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间...

Global site tag (gtag.js) - Google Analytics