我当前正在创建一个可以根据交易表的日期返回其星期的函数,但是如何应用日期为的范围:
如果每月的第一天是星期二到星期六,那么
07/01/2020 - 07/12/2020 = Week 1,
07/13/2020 - 07/19/2020 = Week 2,
07/20/2020 - 07/26/2020 = Week 3,
07/27/2020 - 07/31/2020 = Week 4
并且当每月的第一天是星期一或星期日时,返回应该是
06/01/2020 - 06/07/2020 = Week 1,
06/08/2020 - 06/14/2020 = Week 2,
06/15/2020 - 06/21/2020 = Week 3,
06/22/2020 - 06/30/2020 = Week 4
谢谢。
答案 0 :(得分:0)
根据月的开始日期,您有不同的周分类方式。
您可以使用以下IF ELSE逻辑。
DECLARE @transactionDate date = '2020-07-12'
DECLARE @WeekName VARCHAR(30)
IF (datename(weekday,dateadd(day,1,EOMONTH(@transactionDate,-1)))) IN ('Sunday','Monday')
BEGIN
SET @WeekName = (SELECT CASE WHEN DATEPART(day,@transactionDate) BETWEEN 1 AND 12 THEN 'Week 1'
WHEN DATEPART(day,@transactionDate) BETWEEN 13 AND 19 THEN 'Week 2'
WHEN DATEPART(day,@transactionDate) BETWEEN 20 AND 26 THEN 'Week 3'
WHEN DATEPART(day,@transactionDate) BETWEEN 27 AND 31 THEN 'Week 4' END )
END
ELSE
BEGIN
SET @WeekName = (SELECT CASE WHEN DATEPART(day,@transactionDate) BETWEEN 1 AND 7 THEN 'Week 1'
WHEN DATEPART(day,@transactionDate) BETWEEN 8 AND 14 THEN 'Week 2'
WHEN DATEPART(day,@transactionDate) BETWEEN 15 AND 21 THEN 'Week 3'
WHEN DATEPART(day,@transactionDate) BETWEEN 22 AND 31 THEN 'Week 4' END
)
END
SELECT @WeekName
第2周