我想提供开始日期和结束日期作为输入,我需要该日期之间的星期数列表。 例如: 如果我将开始日期设为01/11/2019并将结束日期设为14/12/2019,而我的输出将为
1
2
3
4
5
1
2
3
(因为前5个是11月的几周,下3个是12月的几周).....让我们来看另一个示例:如果我将开始日期设为14/11/2019,将结束日期设为2019年12月14日,我的输出将为
3
4
5
1
2
3
(因为前3个是11月的几周,接下来的3个是12月的几周)....
DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME
DECLARE @CurrentDate AS DATETIME
SET @StartDate = '2019-11-01'
SET @EndDate = '2019-12-14'
SET @CurrentDate = @StartDate
WHILE (@CurrentDate < @EndDate)
BEGIN
Print datepart(day, datediff(day, 0, @CurrentDate)/7 * 7)/7 + 1
SET @CurrentDate = DATEADD(DAY, 7, @CurrentDate);
END
答案 0 :(得分:0)
您可以在脚本下方尝试此操作-
DECLARE @StartDate AS DATETIME
DECLARE @EndDate AS DATETIME
DECLARE @CurrentDate AS DATETIME
SET @StartDate = '2019-11-01'
SET @EndDate = '2019-12-14'
SET @CurrentDate = @StartDate
WHILE (@CurrentDate < @EndDate)
BEGIN
IF datepart(DD,@CurrentDate) <=7
BEGIN
SET @CurrentDate = DATEADD(DD,-(DATEPART(DD,@CurrentDate)-1),@CurrentDate)
END
PRINT datepart(dd,@CurrentDate)/7 +1
SET @CurrentDate = DATEADD(DAY, 7, @CurrentDate);
END
答案 1 :(得分:0)
请将此连击结果与星期开始日期和结束日期一起使用
DECLARE @StartDate datetime,
@EndDate datetime,
@CurrentDate datetime,
@IsTrue BIT=0
SET @StartDate = '2019-11-01'
SET @EndDate = '2019-12-14'
SET @CurrentDate=@StartDate
WHILE ( @CurrentDate <= @EndDate )
BEGIN
IF( Format(@CurrentDate, 'MM') != Format(@StartDate, 'MM')
AND @IsTrue = 0 )
BEGIN
SET @CurrentDate=Dateadd(month, Datediff(month, 0, @CurrentDate), 0)
PRINT @CurrentDate
SET @IsTrue=1
END
SELECT CONVERT(VARCHAR(20), ( Datepart(week, @CurrentDate) -
Datepart(week,
Dateadd(day, 1, Eomonth(
@CurrentDate, -1))) ) + 1),
@CurrentDate,
Dateadd(day, 6, @CurrentDate)
PRINT( CONVERT(VARCHAR(20), ( Datepart(week, @CurrentDate) -
Datepart(week,
Dateadd(day, 1, Eomonth(
@CurrentDate, -1))) ) + 1) )
SET @CurrentDate = Dateadd(day, 7, @CurrentDate);
END