sql查询指定月份之前的几个月

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql查询指定月份之前的几个月相关的知识,希望对你有一定的参考价值。

参考技术A

1、创建测试表,

create table test_date(id varchar2(20), v_date date);

2、插入测试数据

insert into test_date values(1, sysdate-30);

insert into test_date values(2, sysdate-40);

insert into test_date values(3, sysdate-60);

insert into test_date values(4, sysdate-80);

insert into test_date values(5, sysdate-90);

commit;


3、查询表中全量数据,select t.*, rowid from test_date t;

4、编写sql,查询指定月份之前的几个月;例如,查询当前时间前两个月的数据;

   select t.* from test_date t where to_char(v_date,'yyyymm') = to_char(add_months(sysdate,-2), 'yyyymm');

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

【中文标题】获取最近 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)

【讨论】:

以上是关于sql查询指定月份之前的几个月的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询指定月份范围内,每个月的指定id下的数据量

sql 查找从现在开始/之前的几个月的日期

sql 怎么查询每一年1到12个月的数据

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

SQL 获取两个日期相差几个月,要精确到日

sql如何按日期中的月份查询