首页 > 解决方案 > 获取一周的第一天 T-SQL

问题描述

如何获得一周的第一天(星期一),其中周 = 6 和年 = 2020 我需要得到 10.02.2020

例如。2020 年第 1 周的日期为 06.01.2020 - 12.01.2020 2020 年第 6 周的日期为 10.02.2020 - 16.02.2020

标签: sqltsql

解决方案


DateFirst无论or的设置如何,以下代码都将获取给定日期的一周中的星期一日期Language

Cast( DateAdd( day, - ( @@DateFirst + DatePart( weekday, Datum ) - 2 ) % 7, Datum ) as Date )

示例数据示例:

with SampleData as (
  select GetDate() - 30 as Datum
  union all
  select DateAdd( day, 1, Datum )
    from SampleData
    where Datum < GetDate() )
select Datum,
  -- 1 = Monday through 7 = Sunday.
  ( @@DateFirst + DatePart( weekday, Datum ) - 2 ) % 7 + 1 as WeekDay,
  -- Date of Monday in the week of the supplied date.
  Cast( DateAdd( day, - ( @@DateFirst + DatePart( weekday, Datum ) - 2 ) % 7, Datum ) as Date ) as Monday
  from SampleData;

推荐阅读