首页 > 解决方案 > SQL 查询从可变日期找出一周的非周末(周一至周五)日期

问题描述

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

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

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

我正在编写下面的代码,以通过引用日期来找出非周末天数,并编写查询以找出Week_Start_Date&Week_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)

标签: sqlsql-serverdate

解决方案


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

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

推荐阅读