仅在 MySQL 中返回最近 3 个月的记录

     2023-03-06     212

关键词:

【中文标题】仅在 MySQL 中返回最近 3 个月的记录【英文标题】:Returning records from the last 3 months only in MySQL 【发布时间】:2013-03-13 21:40:10 【问题描述】:

我有一个带有时间戳字段的表。如何获取过去 3 个月的数据?

特别是,3 月是我当前的月份,比如说 03/2012。我只需要返回 3 月、2 月和 1 月的记录。

【问题讨论】:

【参考方案1】:

今天前 3 个月:

select * from table where timestamp >= now()-interval 3 month;

从月初开始:

select * from table where timestamp >= last_day(now()) + interval 1 day - interval 3 month;

【讨论】:

@StephenKloder : 你能解释一下这个查询吗?这里的'interval 1 day'有什么用? @AlwaysBTryin 是否可以使用 date() 函数通过 php 获取它?【参考方案2】:

要获取当月的第一天,您可以使用:

DATE_FORMAT(CURDATE(), '%Y-%m-01')

如果当前日期是2013-03-13,则返回2013-03-01,我们可以从这个日期减去2个月得到2013-01-01。您的查询可能是这样的:

SELECT *
FROM yourtable
WHERE data >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 2 MONTH

【讨论】:

+1 表示 INTERVAL 应该是两个月,而不是三个月,因为三个月将包括一月之前的一个月。【参考方案3】:

假设您使用的是 SQL Server(Oracle、MySQL 和其他类似的日期函数),您可以使用 dateadd 函数为当前日期添加或减去一个间隔。

如果想要整三个月,可以从今天起减去3个月:DATEADD(m,-3,getdate())

但是,正如您所说,您只需要 1 月、2 月和 3 月的数据。您必须根据今天的日期进行一些计算:dateadd(m,-2, CONVERT(datetime, CONVERT(VARCHAR(2), MONTH(getdate())) + '/01/' + CONVERT(VARCHAR(4), YEAR(getdate()))))

最后,得到一个类似

的查询
SELECT fields 
FROM table 
WHERE timestampfield > DATEADD(m,-2, CONVERT(datetime, CONVERT(VARCHAR(2), MONTH(getdate()))  + '/01/' + CONVERT(VARCHAR(4), YEAR(getdate()))))

--- 编辑 --- erf,我刚刚注意到“mysql”标签...您可以在此处获取有关 MySQL 日期函数的更多信息:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

【讨论】:

帖子说“仅在 ​​MySQL 中”【参考方案4】:

我知道这是一个老问题,但可能会节省其他人的时间并总结上述答案以解决需要 (1) 本月日期和 (2) 前 2 个月日期的情况(显示时很常见)数据统计):

WHERE ((timestamp >= NOW() - DATE_FORMAT(CURDATE(), '%Y-%m-01'))
OR  (timestamp >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 2 MONTH))

【讨论】:

【参考方案5】:
WHERE ((timestamp >= NOW() - DATE_FORMAT(CURDATE(), '%Y-%m-01'))
OR  (timestamp >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 2 MONTH))

【讨论】:

请在您的答案中添加一些解释,以便其他人可以从中学习 A code-only answer is not high quality。虽然此代码可能有用,但您可以通过说明其工作原理、工作方式、何时使用以及它的局限性来改进它。请edit您的回答包括解释和相关文档的链接。

如何使用月份名称获取最近 3 个月的计数,如果该月份没有记录需要使用月份名称获取 0 [重复]

】如何使用月份名称获取最近3个月的计数,如果该月份没有记录需要使用月份名称获取0[重复]【英文标题】:Howtogetthecountsoflast3monthswithmonthnames,ifnorecordforthatmonthneedtoget0withmonthname[duplicate]【发布时间】:2019-01-0107:10:33【问题描述... 查看详情

在 BigQuery 中减去最近 3 个月的数据

】在BigQuery中减去最近3个月的数据【英文标题】:Subtractinglast3monthsdatainBigQuery【发布时间】:2020-08-2017:06:11【问题描述】:在BigQuery中,我正在寻找如何减去过去3个月的数据。这是我目前的想法,但这包括本月的数据,因为它使... 查看详情

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

我想统计最近12个月每个月的销售额,请问语句怎么写参考技术A这个得看你数据库表具体字段怎么设计的啊,select销售额FROM表WHERE时间>去年的今天 查看详情

如何在 sql server 中获取最近 3 个月的名称

】如何在sqlserver中获取最近3个月的名称【英文标题】:Howtogetlast3monthnameinsqlserver【发布时间】:2015-11-2506:49:27【问题描述】:我的查询是SELECTCONVERT(CHAR,DATENAME(MONTH,IssueDate))ASMonthName,ItemId,COUNT(CONVERT(VARCHAR,IssueDate,6))ASWorkingDaysFROMdbo 查看详情

面试题:如何在列级别获得最近3个月的聚合?

】面试题:如何在列级别获得最近3个月的聚合?【英文标题】:Interviewquestion:Howtogetlast3monthaggregationatcolumnlevel?【发布时间】:2019-08-0705:01:41【问题描述】:这是我在Apple现场采访中被问到的问题,让我大吃一惊。数据是这样的... 查看详情

SQL 使用两个提前 16 个月的日期字段返回记录

】SQL使用两个提前16个月的日期字段返回记录【英文标题】:SQLtoreturnrecordsusingtwodatefieldsthatfall16monthsaheadofeachother【发布时间】:2017-11-2802:46:20【问题描述】:我有一个包含两个DATETIME字段的表,OpeningDate和FinishingDate。我正在尝试... 查看详情

Power BI:需要计算最近 3 个月的 MTD 销售额

】PowerBI:需要计算最近3个月的MTD销售额【英文标题】:PowerBI:NeedtoCalculateLast3MonthsMTDSales【发布时间】:2021-03-1112:40:37【问题描述】:我有一个场景,我必须根据当前月份的MTD过滤过去3个月的销售额。例如:如果所选月份是3月... 查看详情

SQL 返回另一个日期前 18 个月的所有记录(到月底)

】SQL返回另一个日期前18个月的所有记录(到月底)【英文标题】:SQLtoreturnallrecords18monthsaheadofanotherdate(toendofmonth)【发布时间】:2017-12-0604:10:12【问题描述】:我有一个包含两个DATETIME字段的表,OpeningDate和FinishingDate。我正在尝... 查看详情

mysql查询:最近三个​​月的数据

】mysql查询:最近三个​​月的数据【英文标题】:mysqlquery:datafromlastthreemonths【发布时间】:2011-08-0913:30:48【问题描述】:我正在查询过去三个月的一些数据,唯一的问题是我得到的一些数据在某些月份没有条目。由于他们没有... 查看详情

获取从当前日期到下一个完整月的记录(直到下个月的最后一个日期)mysql [重复]

】获取从当前日期到下一个完整月的记录(直到下个月的最后一个日期)mysql[重复]【英文标题】:Fetchrecordfromcurrentdatetonextwholemonth(tilllastdateofnextmonth)mysql[duplicate]【发布时间】:2017-02-2707:28:58【问题描述】:即假设当前日期是18/... 查看详情

无法在 BigQuery 网页界面中检索超过 2 个月的作业历史记录

】无法在BigQuery网页界面中检索超过2个月的作业历史记录【英文标题】:Unabletoretrievejobhistorybeyond2monthsinBigQueryWebUI【发布时间】:2016-07-2808:56:06【问题描述】:我想为3个月前创建的表重复加载作业,但我只能在BigQuery浏览器UI中... 查看详情

根据当前日期获取前 3 个月的数据 - MySQL

】根据当前日期获取前3个月的数据-MySQL【英文标题】:Getprevious3monthsdatabasedoncurrentdate-MySQL【发布时间】:2011-09-2110:16:30【问题描述】:如何使用SQL语句获取前3个月的数据?例如,如果当前日期是01/01/2012,那么如何获取2011年12... 查看详情

如何获得最近 4 个月的平均值

】如何获得最近4个月的平均值【英文标题】:howgetthelast4monthsaveragevalue【发布时间】:2018-09-0111:59:30【问题描述】:我正在尝试此聚合最近4个月记录每个月的臭氧平均值但平均值为空如何获得平均值db.Air_pollution.aggregate([$match:CRE... 查看详情

获取按月分组的最近 12 个月的数据,即使为 0

...中。以下工作正常,但如果每个月都没有结果,我需要它返回0。$query="SELECTCOUNT(id)astotal_monthFROMappointmentsWHEREcrea 查看详情

获取最近 X 个月的(年,月)

】获取最近X个月的(年,月)【英文标题】:Get(year,month)forthelastXmonths【发布时间】:2011-07-0421:24:14【问题描述】:我在python中做了一件非常简单的事情:从今天开始(包括),我需要最近x个月的元组列表(year,month)。因此,对... 查看详情

Power 查询中基于过去 3 个月的计算列

...是这张表我需要创建两列,每行(CD_LojaxCD_Produto的组合)返回该组合的QT_VENDA总和除以过去3个月的天数。另一列几乎相同,但用VL_VENDA_LIQ的总和代 查看详情

从 Netezza 数据库中获取最近 24 个月的数据

】从Netezza数据库中获取最近24个月的数据【英文标题】:Getthelast24monthsofdatafromNetezzadatabase【发布时间】:2017-03-2318:42:40【问题描述】:我想从我们的netteza数据库中提取过去24个月的数据,但不包括最近两个季度(当前季度和上... 查看详情

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

】如何在SQL中获取当前日期最近六个月的前一个月数据【英文标题】:HowtoGetfirstonemonthdatafromlastsixmonthfromcurrentdateinSQL【发布时间】:2022-01-0312:11:58【问题描述】:我们如何修改以下脚本以获取过去6个月的第一个月数据?selectdate... 查看详情