【问题标题】:SQL Server Last week from sun to satSQL Server 上周从太阳到星期六
【发布时间】:2018-09-25 04:06:48
【问题描述】:

我正在尝试从 Sun 获取日期到上周的星期六,我的代码是,

Declare
      @now DateTime, @fmWeek DateTime, @toWeek DateTime

Set @now = GetDate()
Set @fmWeek = Convert(DateTime, DateAdd(wk, DateDiff(wk, 0, @now), -1))
Set @toWeek = DATEADD(ms,-3,Convert(DateTime, DateAdd(wk, DateDiff(wk, 0,  @now), 6)))

select @fmWeek, @toWeek

它显示了从2018-04-15 00:00:00.0002018-04-21 23:59:59.997 的数据

我需要获取前一周太阳的日期,而不是同一周

【问题讨论】:

    标签: sql sql-server tsql datetime sql-server-2014


    【解决方案1】:

    我需要获取前一周太阳的日期,而不是同一周

    我会减去 7 天:

    Declare @now DateTime = GetDate()
        ,@fmWeek DateTime, @toWeek DateTime;
    
    Set @fmWeek = DateAdd(wk, DateDiff(wk, 0, @now), -1) - 7;
    Set @toWeek = DateAdd(wk, DateDiff(wk, 0, @now), 5) - 7;
    select @fmWeek, @toWeek;
    

    DBFiddle Demo

    【讨论】:

      【解决方案2】:

      如果您只想显示两个日期,@lad2025 为您提供了正确的查询来获取日期。

      如果你想显示这两天之前的所有日期,你可以尝试如下。

      Declare @now DateTime = GetDate()
          ,@fmWeek DateTime, @toWeek DateTime;
      
      Set @fmWeek = DateAdd(wk, DateDiff(wk, 0, @now), -1) - 7;
      Set @toWeek = DateAdd(wk, DateDiff(wk, 0, @now), 5) - 7;
      
      SELECT @fmWeek + RN AS DATE FROM
      (   
          SELECT (ROW_NUMBER() OVER (ORDER BY (SELECT NULL)))-1 RN 
          FROM   master..[spt_values] T1
      ) T 
      WHERE RN <= DATEDIFF(DAY,@fmWeek,@toWeek)
      

      输出:

      Date
      ------------------------
      2018-04-08 00:00:00.000
      2018-04-09 00:00:00.000
      2018-04-10 00:00:00.000
      2018-04-11 00:00:00.000
      2018-04-12 00:00:00.000
      2018-04-13 00:00:00.000
      2018-04-14 00:00:00.000
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        相关资源
        最近更新 更多