SQL最近6个月

DNa*_*Nac 33 sql sql-server

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

where datetime_column > DATEADD(m, -6, current_timestamp)
Run Code Online (Sandbox Code Playgroud)

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

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

cod*_*ger 58

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

where datetime_column >= Dateadd(Month, Datediff(Month, 0, DATEADD(m, -6,
current_timestamp)), 0)
Run Code Online (Sandbox Code Playgroud)


jue*_*n d 10

在MySQL中

where datetime_column > curdate() - interval (dayofmonth(curdate()) - 1) day - interval 6 month
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示

在SQL Server中

where datetime_column > dateadd(m, -6, getdate() - datepart(d, getdate()) + 1)
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示


Den*_*Don 5

试试这个

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个月数据的最终条件

结果<= 6