在SQL Server中获取全年的所有星期日,星期二,星期三

时间:2019-02-24 12:41:19

标签: sql sql-server

enter image description here

我具有以下要求:

  1. 需要获取2019年的所有星期日,星期二,星期三日期。
  2. 一旦我们获得了这几天的日期,那么列应该是“ FromDate”和“ ToDate”
  3. 如果日期的星期天,星期三应为5:00:00 Pm(FromColumn)至6:00:00 PM(ToColumn),星期二的日期时间应为FromColumn 8:00:00 AM至9:00 :00:(Tocolumn)中的

  4. 此后,我们需要在物理表中输入此列“ FromDate”和“ Todate”,这些存储在数据库中

我正在使用上述逻辑,但无法更新“ ToDate”列,也无法在物理表中插入数据。

1 个答案:

答案 0 :(得分:1)

您可以使用数字表或递归CTE生成所有日期。剩下的只是日期算术和过滤:

with dates as (
      select convert(datetime, '2019-01-01') as dte
      union all
      select dateadd(day, 1, dte)
      from dates
      where dte < '2019-12-31'
     )
select (case when datename(weekday, dte) in ('Sunday', 'Wednesday')
             then dateadd(hour, 17, dte)
             else dateadd(hour, 8, dte)
        end) as FromDate,
       (case when datename(weekday, dte) in ('Sunday', 'Wednesday')
             then dateadd(hour, 18, dte)
             else dateadd(hour, 9, dte)
        end) as ToDate       
from dates
where datename(weekday, dte) in ('Sunday', 'Tuesday', 'Wednesday')
option (maxrecursion 0);

Here是db <>小提琴。