我的表包含一个日期时间列。我只需要过去6个月才能返回行。这可以通过
来完成where datetime_column > DATEADD(m, -6, current_timestamp)
但是,如果我想从本月的第一天开始返回最近一个月,如何扩展此选项?例如。我在月中(14/6/2000)
运行此条件,最新行设置为14/1/2000
,但我想将其作为1/1/2000
返回。有什么建议吗?
我尝试了一些子查询(日期时间的最大功能,包括月份功能),但没有成功。
答案 0 :(得分:50)
对于MS SQL Server,您可以使用:
where datetime_column >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,
current_timestamp)), 0)
答案 1 :(得分:9)
where datetime_column > curdate() - interval (dayofmonth(curdate()) - 1) day - interval 6 month
where datetime_column > dateadd(m, -6, getdate() - datepart(d, getdate()) + 1)
答案 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'))