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

use*_*050 24 sql sql-server select date sql-server-2008

你怎么能得到今天的日期并将其转换为01/mm /yyyy格式并从3个月前的交货月份中获取数据?表已包含交货月份01/mm/yyyy.

M.A*_*Ali 70

SELECT * 
FROM TABLE_NAME
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 
Run Code Online (Sandbox Code Playgroud)

Mureinik建议的方法将返回相同的结果,但这样做可以使您的查询受益于任何索引Date_Column.

或者您可以查看最近90天.

SELECT * 
FROM TABLE_NAME
WHERE Date_Column >= DATEADD(DAY, -90, GETDATE()) 
Run Code Online (Sandbox Code Playgroud)

  • 实际上你可以做`GETDATE() - 90`而不是'DATEADD(DAY,-90,GETDATE())` (6认同)
  • @huMptyduMpty但是3个月不一定是90天,因为月份可能有30天或31天(如果我们考虑二月份,甚至可以是28或29天) (6认同)

Mit*_*nan 11

最新版本的mysql不支持DATEADD而是使用语法

DATE_ADD(date,INTERVAL expr type)
Run Code Online (Sandbox Code Playgroud)

要获得最近3个月的数据使用,

DATE_ADD(NOW(),INTERVAL -90 DAY) 
DATE_ADD(NOW(), INTERVAL -3 MONTH)
Run Code Online (Sandbox Code Playgroud)

  • `DATE_ADD`工作得很好!MySQL中似乎不存在"DATEADD". (3认同)

Mur*_*nik 6

我使用datediff,而不关心格式转换:

SELECT *
FROM   mytable
WHERE  DATEDIFF(MONTH, my_date_column, GETDATE()) <= 3
Run Code Online (Sandbox Code Playgroud)