【问题标题】:Select rows with date field having values within this week选择日期字段在本周内具有值的行
【发布时间】:2010-11-15 21:02:43
【问题描述】:

我正在尝试从日期字段在当前周内具有值的表中选择所有行。我想要从本周的星期一到当天的行。

例子:

身份证日期 --------------- 1 2010 年 11 月 11 日 2 2010 年 12 月 11 日 3 13-11-2010 4 14-11-2010 5 15-11-2010

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

身份证日期 --------------- 4 14-11-2010 //本周的星期一 5 15-11-2010 //直到今天

【问题讨论】:

    标签: sql datetime date firebird


    【解决方案1】:

    这将适用于从周日到周六的一周。如果你想要从周一到周日的几周,你应该调整它:

    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】:

      我用ms 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
      

      星期天是一周的开始。

      【讨论】:

      • 为了提高效率,我在查询之外进行了日期计算,这样就不会对表中的每条记录重复计算,尤其是在您有大量记录的情况下。
      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      相关资源
      最近更新 更多