加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

获取两个日期SQL之间的工作日数(星期日,星期一,星期二)

发布时间:2020-12-12 16:20:44 所属栏目:MsSql教程 来源:网络整理
导读:因此,对于开始日期和结束日期,我想确定这两个日期之间一周的特定日期. 星期一,星期二等等 我知道我可以在开始日期和结束日期之间循环并检查每一天,但差异可能是很多天.我更喜欢不需要循环的东西.有任何想法吗? (必须在SQL Server 2005中支持) 解决方法 鉴于
因此,对于开始日期和结束日期,我想确定这两个日期之间一周的特定日期.

星期一,星期二等等

我知道我可以在开始日期和结束日期之间循环并检查每一天,但差异可能是很多天.我更喜欢不需要循环的东西.有任何想法吗? (必须在SQL Server 2005中支持)

解决方法

鉴于我认为你想要得到的,这应该做到:
SET DATEFIRST 1

DECLARE
    @start_date DATETIME,@end_date DATETIME

SET @start_date = '2011-07-11'
SET @end_date = '2011-07-22'

;WITH Days_Of_The_Week AS (
    SELECT 1 AS day_number,'Monday' AS day_name UNION ALL
    SELECT 2 AS day_number,'Tuesday' AS day_name UNION ALL
    SELECT 3 AS day_number,'Wednesday' AS day_name UNION ALL
    SELECT 4 AS day_number,'Thursday' AS day_name UNION ALL
    SELECT 5 AS day_number,'Friday' AS day_name UNION ALL
    SELECT 6 AS day_number,'Saturday' AS day_name UNION ALL
    SELECT 7 AS day_number,'Sunday' AS day_name
)
SELECT
    day_name,1 + DATEDIFF(wk,@start_date,@end_date) -
        CASE WHEN DATEPART(weekday,@start_date) > day_number THEN 1 ELSE 0 END -
        CASE WHEN DATEPART(weekday,@end_date)   < day_number THEN 1 ELSE 0 END
FROM
    Days_Of_The_Week

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读