SQL最近6个月

时间:2013-10-07 14:50:37

标签: sql sql-server

我的表包含一个日期时间列。我只需要过去6个月才能返回行。这可以通过

来完成
where datetime_column > DATEADD(m, -6, current_timestamp)

但是,如果我想从本月的第一天开始返回最近一个月,如何扩展此选项?例如。我在月中(14/6/2000)运行此条件,最新行设置为14/1/2000,但我想将其作为1/1/2000返回。有什么建议吗?

我尝试了一些子查询(日期时间的最大功能,包括月份功能),但没有成功。

5 个答案:

答案 0 :(得分:50)

对于MS SQL Server,您可以使用:

where datetime_column >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,
current_timestamp)), 0)

答案 1 :(得分:9)

在MySQL中

where datetime_column > curdate() - interval (dayofmonth(curdate()) - 1) day - interval 6 month

SQLFiddle demo

在SQL Server中

where datetime_column > dateadd(m, -6, getdate() - datepart(d, getdate()) + 1)

SQLFiddle demo

答案 2 :(得分:3)

试试这个

<强> where datediff(month, datetime_column, getdate()) <= 6

此部分datediff(month, datetime_column, getdate())将获得当前日期和Datetime_Column的月份差异,并将返回如下行:

  

结果
1
2
3
4
5
6
7
8
9 <登记/>   10

这是我们获取最近6个月数据的最终条件

  

结果&lt; = 6

答案 3 :(得分:2)

....其中yourdate_column&gt; DATE_SUB(now(),INTERVAL 6 MONTH)

答案 4 :(得分:0)

select *
from tbl1
where
datetime_column >= 
DATEADD(m, -6, convert(date, convert(varchar(6), getdate(),112) + '01'))