最近六个月的“完整” SQL

DNac

我有包含一个datetime列的表。我只需要返回过去6个月的行。这可以通过

WHERE CloseTime >= DATEADD(Month, DATEDIFF(Month, 0, DATEADD(m, - 6, CURRENT_TIMESTAMP)), 0)

这将获取我开始执行该脚本的月份的数据+上个月的6个数据。因此,例如,如果我今天运行此脚本,则将获取本月的数据以及直到4月(04)的所有前几个月的数据。

现在,我需要修改条件,因此,如果今天运行脚本,则只能获取03-09个月的数据,不包括本月的天数(10)。

有什么建议吗?

亚伦·伯特兰(Aaron Bertrand)

如果您希望拥有过去的6个月,而不管今天是第1、3、9、29,还是其他任何一个月,则只需减去7个月即可。这是一种方法:将月份的第一天放入变量中,然后在查询中使用开放式范围。

DECLARE @ThisMonth DATETIME;
SET @ThisMonth = DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101');

SELECT...
WHERE CloseTime >= DATEADD(MONTH, -7, @ThisMonth)
  AND CloseTime <  @ThisMonth;

您也可以使用0代替,'19000101'但我更喜欢使用显式日期而不是隐式速记(这是一个很难打破的习惯)。

如果您真的不喜欢变量,则可以通过重复该表达式来计算本月的第一天(并在范围的开始,从月份数中减去7),使查询变得更加复杂。

SELECT...
WHERE CloseTime >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE())-7, '19000101')
  AND CloseTime <  DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101');

呸。变量使整整齐齐。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

最近六个月python中的数字

来自分类Dev

从数据框中选择最近的和最近的第六个月

来自分类Dev

六个月期间的平均值

来自分类Dev

熊猫集团六个月

来自分类Dev

六个月期间的平均值

来自分类Dev

如何从数据库和组每月数据中检索最近六个月的数据

来自分类Dev

包括本月在内的即将到来的六个月列表

来自分类Dev

安装后六个月,SSD速度变慢

来自分类Dev

如何在mongodb中查询以查找过去六个月的日期

来自分类Dev

将可变日期设置为今天之前的六个月

来自分类Dev

为什么我六个月大的域名的DNS突然无法解析?

来自分类Dev

检查时间戳列的值是否超过六个月

来自分类Dev

在 MYSQL 中显示过去六个月每个类别的总费用

来自分类Dev

检查过去六个月的活动日期

来自分类Dev

SQL最近6个月

来自分类Dev

最近12个月的SQL总和

来自分类Dev

SQL最近6个月

来自分类Dev

如何在没有任何自定义表的情况下迭代最近六个月(包括当前)的循环?

来自分类Dev

前六个月出现问题

来自分类Dev

如何在Java中单行获取当前日期之前六个月的日期?

来自分类Dev

将今天的大熊猫提前六个月或之前的数据进行子集化

来自分类Dev

SQL查询以获取最近3个月的数据

来自分类Dev

最近13个月的SQL WHERE子句

来自分类Dev

SQL最近三个月

来自分类Dev

如何在sql中选择最近的12个月?

来自分类Dev

Oracle SQL-最近12个月的数据

来自分类Dev

如何从sql表中获取最近3个月的数据

来自分类Dev

SQL Server:将SELECT限制为仅获取最近4周/ 1个月的数据

来自分类Dev

Python-每周,每月,每季度,六个月,一年等获取第一个和最后一个观察值

Related 相关文章

热门标签

归档