SQL Server 2016-动态日期最后四周(周六至周五)

SQL Server 2016-动态日期最后四周(周六至周五),sql,sql-server,date,dynamic,Sql,Sql Server,Date,Dynamic,我正在使用SQL Server 2016 我需要用日期填充两列 第一栏: 假设今天是2020年4月11日星期三。我想要上周五(即2020年10月30日)的日期,在这种情况下,要到四周后的周六(即2020年10月3日) 第二栏: 在下一列中,我希望该周的星期五日期在整个星期内重复,因此该列应该有四个不同的日期 应该是这样的 calDate WeekendDate 10/3/2020 10/9/2020 10/4/2020 10/9/2020 10/5/2020 10/9/202

我正在使用SQL Server 2016 我需要用日期填充两列

第一栏: 假设今天是2020年4月11日星期三。我想要上周五(即2020年10月30日)的日期,在这种情况下,要到四周后的周六(即2020年10月3日)

第二栏: 在下一列中,我希望该周的星期五日期在整个星期内重复,因此该列应该有四个不同的日期

应该是这样的

calDate     WeekendDate
10/3/2020   10/9/2020
10/4/2020   10/9/2020
10/5/2020   10/9/2020
10/6/2020   10/9/2020
10/7/2020   10/9/2020
10/8/2020   10/9/2020
10/9/2020   10/9/2020
10/10/2020  10/16/2020
10/11/2020  10/16/2020
10/12/2020  10/16/2020
10/13/2020  10/16/2020
10/14/2020  10/16/2020
10/15/2020  10/16/2020
10/16/2020  10/16/2020
10/17/2020  10/23/2020
10/18/2020  10/23/2020
10/19/2020  10/23/2020
10/20/2020  10/23/2020
10/21/2020  10/23/2020
10/22/2020  10/23/2020
10/23/2020  10/23/2020
10/24/2020  10/30/2020
10/25/2020  10/30/2020
10/26/2020  10/30/2020
10/27/2020  10/30/2020
10/28/2020  10/30/2020
10/29/2020  10/30/2020
10/30/2020  10/30/2020
更新

下面的代码给出了第一列,我需要得到填充第二列的逻辑。需要帮助获取相关日期的周五日期

注:本例中的一周为周六至周五


IF OBJECT_ID('tempdb..#DATE1') IS NOT NULL
BEGIN
DROP TABLE #DATE1 
END;

DECLARE @tmpDates1 TABLE (calDate DATETIME)
DECLARE @beginDate DATETIME
SET @beginDate = DATEADD(wk, DATEDIFF(wk,0,GETDATE())-5, 5)
WHILE @beginDate < DATEADD(wk, DATEDIFF(wk,0,GETDATE())-1, 5)
BEGIN
    INSERT INTO @tmpDates1 ([calDate]) VALUES (@beginDate)
    SET @beginDate = DATEADD(DAY,1,@beginDate)
END


SELECT * iNTO #date1 FROM @tmpDates1

select * from #date1


为此,您需要一个日期作为比较。举个例子:

DECLARE @CompFriday DATE = '2020-01-03'

DECLARE @t TABLE(
  MyDate DATE
)

INSERT INTO @t VALUES
('2020-11-04')
,('2020-11-05')
,('2020-11-06')
,('2020-11-07')
,('2020-11-08')
,('2020-11-09')
,('2020-11-10')
,('2020-11-11')

SELECT *
      ,DATEADD(d, -1 * DATEDIFF(d, @CompFriday, MyDate)%7, MyDate)
  FROM @t

我想要一辆全新的法拉利。想交易吗?说真的,我们不是来为你写代码的。我们在这里帮助您在编写代码时解决问题。那么,到目前为止你尝试了什么?我有第一列逻辑,不确定如何获得相关日期的星期五日期Hanks Tyron这很有效。自从@CompFriday被设置为今年的第一个星期五以来,每年都会发生变化,这会起作用吗?@Drake只要星期五已经过去,这应该会起作用。我们通常使用2000年的某个星期五或其他时间,因为我们在今年之前不处理数据。@Drake您是否已经有机会在下一年检查此解决方案?如果这个解决方案解决了这个问题,如果你能接受我的回答,那就太好了。