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

Posted

技术标签:

【中文标题】在sql中获取上个月日期的数据【英文标题】:Getting the last month date's data in sql 【发布时间】:2014-01-23 07:31:39 【问题描述】:

我有以下查询来获取上个月日期的数据。假设今天是23rd Dec,那么它获取23rd Nov 数据。但是当它是31st Dec 时,就没有31st Nov。在这种情况下,它应该获取30th Nov 数据。

所以,我想减少一天并再次检查条件并应该获取数据。在这种情况下,假设在March 31st,首先该查询甚至应该检查feb 31st,然后它应该检查feb 30,然后是29th,以此类推,直到该特定月份的有效日期。

我当前的查询:

select * 
from dataTable 
where date(datecolumn)=date(add_months(DATE(sysdate-1) ,-1));

因此,这只获取上个月的日期数据。那么,有人可以建议我如何检查查询中提到的验证并获取数据吗?

【问题讨论】:

您当前的查询不是有效的 Postgres 查询。你确定你正在使用或瞄准 Postgres? @MilenA.Radev 抱歉,我目前正在 mysql 中测试此查询,必须将此查询转移到实际服务器上的 postgres。 如果是 12 月 30 日,它应该获取什么? @PeterRing 同样,在 12 月 30 日它应该获取 11 月 30 日,甚至在 12 月 31 日它应该获取 11 月 30 日,因为 11 月 31 日不是有效日期。 【参考方案1】:

试试这个:

SELECT dateadd(mm, -1, Convert(Datetime, '2013-12-31')

【讨论】:

这是否适用于条件?就像是 10 月 31 日一样,它应该获取 9 月 30 日,因为 9 月 31 日无效。 执行即可。我认为您不需要任何条件,只需通过日期即可。

以上是关于在sql中获取上个月日期的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何获取我的 SQL/Vertica 表中每个日期的上个月数据

如何在 SQL Server 中获取上个月的昨天日期?有人可以帮我解决这个问题吗?

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

sql中常见日期获取

SQL查询以获取特定年份的当前日期(考虑月份和日期)的数据

Oracle SQL日期获取上个季度的第一天和上个季度的最后一天