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

Posted

技术标签:

【中文标题】获取最近 3 个月数据的 SQL 查询【英文标题】:SQL query for getting data for last 3 months 【发布时间】:2014-03-21 15:41:30 【问题描述】:

如何获取今天的日期并将其转换为01/mm /yyyy 格式并从表中获取3 个月前交货月份的数据?表中已包含交货月份为01/mm/yyyy

【问题讨论】:

WHERE Convert(DATE,TableColumn)>= GETDATE()-90??到目前为止,您尝试过什么吗? 为什么将日期存储为字符串?你应该把桌子修好。 月份从交货日期开始在表格中创建,格式为 01/mm/yyyy。这是为了以后php的易用性。因此,为了获得过去 3 个月的特定交付类型,我想获取今天的日期并将其转换为 01/mm/yyyy 格式,并在表中使用交付月份进行引用以获得至少 3 个月,包括当前月份数据. 我尝试选择前 3 名并按交货月份描述订购,但它让我成为该月前 3 名交货。所以我用了 日期部分(mm,获取日期) 【参考方案1】:
SELECT * 
FROM TABLE_NAME
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 

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

或者您可以检查过去 90 天。

SELECT * 
FROM TABLE_NAME
WHERE Date_Column >= DATEADD(DAY, -90, GETDATE()) 

【讨论】:

其实你可以用GETDATE()-90代替DATEADD(DAY, -90, GETDATE()) @huMptyduMpty 但是 3 个月不一定是 90 天,因为几个月可能有 30 或 31 天(如果考虑到 2 月,甚至可能有 28 或 29 天)【参考方案2】:

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

DATE_ADD(date,INTERVAL expr type)

要获取最近 3 个月的数据使用情况,

DATE_ADD(NOW(),INTERVAL -90 DAY) 
DATE_ADD(NOW(), INTERVAL -3 MONTH)

【讨论】:

DATE_ADD 完美运行! DATEADD 在 MySQL 中似乎不存在。【参考方案3】:

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

SELECT *
FROM   mytable
WHERE  DATEDIFF(MONTH, my_date_column, GETDATE()) <= 3

【讨论】:

【参考方案4】:

过去 3 个月

SELECT DATEADD(dd,DATEDIFF(dd,0,DATEADD(mm,-3,GETDATE())),0)

今天

SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)

【讨论】:

以上是关于获取最近 3 个月数据的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

获取最近 4 个月 SQL Netezza 的百分比

如何在SQL中获取当前日期最近六个月的前一个月数据

如何通过 SQL Server 中的分组列根据日期列的最近 3 个月获取列平均值?

sql中获取到两条数据,怎么获取最新的

在sql中获取上个月日期的数据

php+mysql中怎么查询最近12个月每个月的数据