【发布时间】:2019-07-10 21:36:25
【问题描述】:
我正在尝试从今天和过去 4 周内每周的同一天选择记录。
- 今天(星期二)
- 上周二
- 在那之前的那个星期二
- 在那之前的那个星期二
我需要将其绑定到当前日期,因为我将每天运行此查询,所以我不想使用介于或手动指定日期范围的东西。
到目前为止,我发现或尝试的所有内容都提取了最后一个月的数据,但没有提取同一工作日的最后 4 周。
select *
from table
where thedatecolumn >= DATEADD(mm, -1, GETDATE())
这可行,但会提取上个月的所有内容。
如果今天的日期是7/10/2019 我需要
Data from 7/10/2019
Data from 7/3/2019
Data from 6/26/2019
Data from 6/19/2019
我每天都会运行这个查询,所以我需要它基于当前日期是动态的。
【问题讨论】:
-
"Today (Tuesday)" 今天是星期三/星期四(取决于你的地理位置,但没有 UTC -21 是星期二),你也是总是在星期二的数据之后,不管它实际上是哪一天?
-
获取今天的午夜,然后在午夜和 {midnight + 23h59m59s} 之间使用。在 {midnight-7d} 和 {midnight-7d + 23h59m59s} 之间添加。以此类推剩余的几周。
-
@ŁukaszNojek - 由于值小于一秒,因此存在超出该范围的值。对于给定的日期 + 1,您需要给定的日期 >= 和
-
没错,这只是对有限评论空间的简化。感谢您的澄清。
标签: sql-server date