【问题标题】:SQL Get interval last week (sunday to saturday)SQL 获取上周的时间间隔(周日到周六)
【发布时间】:2016-12-07 23:39:23
【问题描述】:

我需要一个简单的 sql 脚本,我可以在其中获取日期介于 2 周前的星期日和前一周的星期六之间的行。

无论我在本周的哪一天运行查询,我都需要查询来返回元素。

假设我今天运行查询:2016 年 12 月 12 日星期四。(12-08-2016)

我需要得到这个间隔:

SELECT * FROM table WHERE date BETWEEN '11-27-2016' AND '12-03-2016'

【问题讨论】:

  • 你的数据库是什么?
  • @Mihai Microsoft SQL Server
  • 您可以通过多种方式做到这一点。一个是:select cast(dateadd(week, -2, getdate() - t.num) as date) startDate, cast(getdate() - t.num - 1 as date) endDate from (values ('sunday', 0), ('monday', 1), ('tuesday', 2), ('wednesday', 3), ('thursday', 4), ('friday', 5), ('saturday', 6)) t(name, num) where datename(weekday, getdate()) = t.name

标签: sql sql-server


【解决方案1】:
DECLARE @StartInterval DATE,
        @EndInterval DATE,
        @Today = GETDATE()

SET @EndInterval = DATEADD(dd,-1,DATEADD(dd,-1*(DATEPART(dw,@Today)-1),@Today))
SET @StartInterval = DATEADD(dd,-6,@EndInterval)

SELECT * 
FROM table 
WHERE date BETWEEN @StartInterval AND @EndInterval

【讨论】:

  • 注意:这通常可行,但要求您的 datefirst 为 7(星期日,默认值,但并非总是此值)。
【解决方案2】:

您可以使用: select * from table where date between next_day(date, 'SUN')-21 AND next_day(date, 'SAT')-14

【讨论】:

  • next_day() 不是 MSSQL Server 中可识别的函数
  • 我认为您正在考虑 Oracle。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多