如何解决SQL Server 2016-动态日期为期四周星期六至星期五
我正在使用sql Server 2016 我需要两列填充日期。
第一栏: 可以说今天是2020年11月4日星期三。我想要的日期是从上周五(在这种情况下为10/30/2020)到周六的四个星期(即10/3/2020)
第二列: 在下一列中,我希望该周的星期五日期重复整周,因此该列应具有四个不同的日期。
它应该看起来像这样。
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,GETDATE())-5,5)
WHILE @beginDate < DATEADD(wk,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。