代码之家  ›  专栏  ›  技术社区  ›  Ed.C

选择日期字段在本周内具有值的行

  •  1
  • Ed.C  · 技术社区  · 14 年前

    我试图从一个表中选择所有行,其中一个日期字段的值在当前周内。我要从星期一到今天的行数。

    例子:

    ID   adate
    ---------------
    1    11-11-2010
    2    12-11-2010
    3    13-11-2010
    4    14-11-2010
    5    15-11-2010
    

    在这种情况下,我想要的行是:

    ID   adate
    ---------------
    4    14-11-2010  //this week's Monday
    5    15-11-2010  //till today
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   jachguate    14 年前

    从星期天到星期六这一周有效。如果星期一到星期日需要几周时间,则应进行调整:

    select *
      from myTable
     where aDate between
             cast('now' as date) - extract(weekday from cast('now' as date))  --prev sunday
             and
             cast('now' as date) - extract(weekday from cast('now' as date)) + 6  --next saturday
             ;
    
        2
  •  1
  •   Eric K Yung    14 年前

    我是用微软的sql写的:

    declare @today as datetime
    declare @first_day_of_week datetime
    set @today = convert(varchar, getDate(), 101)
    set @first_day_of_week = dateadd(day, -(DATEPART(WEEKDAY, @today) - 1), @today)
    select *
    from [table]
    where adate between @first_day_of_week and @today
    

    星期日是一周的开始。