在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 表中每个日期的上个月数据