SQL查询从可变日期中找出一周的非周末(周一至周五)日期

时间:2021-01-06 07:19:01

标签: sql sql-server date

我正在编写 SQL 查询以从可变日期中找出一周的非周末日期(即周一至周五)。

基本上,它应该显示给定日期的一周的周末(周六和周日)没有出现的日期。

例如如果给定的日期是 2021 年 1 月 6 日。那么输出日期应该在 2021 年 1 月 4 日至 8 日之间。 即 Week_Start_Date 应为 2021-01-04,而 Week_End_Date 应为 2021-01-08

我正在编写以下代码,通过引用日期来找出非周末天数,并编写查询以使用引用日期找出 Week_Start_DateWeek_End_Date,但无法结合这两者。

DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2021/01/04'
SET @EndDate = '2021/01/08'


SELECT
   (DATEDIFF(dd, @StartDate, @EndDate) + 1)
  -(DATEDIFF(wk, @StartDate, @EndDate) * 2)
  -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
  -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)

  SELECT  DATEADD(DAY, 2 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [Week_Start_Date],  
DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [Week_End_Date] ;

编辑:

我使用以下 SQL 查询获得所需的输出:-

SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),4)

1 个答案:

答案 0 :(得分:0)

我使用以下 SQL 查询获得所需的输出:-

SELECT DATEADD(week,DATEDIFF(week,0,GETDATE()),0)
SELECT DATEADD(week,DATEDIFF(week,0,GETDATE()),4)