从开始日期到结束日期显示星期数

时间:2019-11-22 09:59:22

标签: javascript c# sql asp.net

我想提供开始日期和结束日期作为输入,我需要该日期之间的星期数列表。 例如: 如果我将开始日期设为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

2 个答案:

答案 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