我有一个包含一个日期时间列的表。我只需要返回最近 6 个月的行。这可以通过
where datetime_column > DATEADD(m, -6, current_timestamp)
但是,如果我想从该月的第一天开始返回最近一个月,如何扩展此选项?例如,我在月中运行此条件(14/6/2000)
,最新行设置为14/1/2000
,但我想将其返回为1/1/2000
。有什么建议吗?
我尝试了一些子查询(日期时间的最大函数,包括月份函数),但没有成功。
我有一个包含一个日期时间列的表。我只需要返回最近 6 个月的行。这可以通过
where datetime_column > DATEADD(m, -6, current_timestamp)
但是,如果我想从该月的第一天开始返回最近一个月,如何扩展此选项?例如,我在月中运行此条件(14/6/2000)
,最新行设置为14/1/2000
,但我想将其返回为1/1/2000
。有什么建议吗?
我尝试了一些子查询(日期时间的最大函数,包括月份函数),但没有成功。
对于 MS SQL Server,您可以使用:
where datetime_column >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,
current_timestamp)), 0)
where datetime_column > dateadd(m, -6, getdate() - datepart(d, getdate()) + 1)
where datetime_column > curdate() - interval (dayofmonth(curdate()) - 1) day - interval 6 month
试试这个
where datediff(month, datetime_column, getdate()) <= 6
排除或过滤出未来的日期
where datediff(month, datetime_column, getdate()) between 0 and 6
这部分datediff(month, datetime_column, getdate())
将获取当前日期和 Datetime_Column 数量的月差,并将返回 Rows,如:
结果
1
2
3
4
5
6
7
8
9
10
这是我们获得最近 6 个月数据的最后条件
结果 <= 6
.... where yourdate_column > DATE_SUB(now(), INTERVAL 6 MONTH)
select *
from tbl1
where
datetime_column >=
DATEADD(m, -6, convert(date, convert(varchar(6), getdate(),112) + '01'))