mysql获取与年份无关的月数

mysql获取与年份无关的月数,mysql,sql,date,Mysql,Sql,Date,我需要在过去三年里逐月取得成绩。这就是我所拥有的: CREATE DEFINER=`root`@`localhost` PROCEDURE `by_year`() BEGIN DROP TEMPORARY TABLE IF EXISTS aaa; SET @year = 2014; WHILE @year <= YEAR(CURDATE()) DO CREATE TEMPORARY TABLE IF NOT EXISTS aaa (Año int,

我需要在过去三年里逐月取得成绩。这就是我所拥有的:

CREATE DEFINER=`root`@`localhost` PROCEDURE `by_year`()
BEGIN
    DROP TEMPORARY TABLE IF EXISTS  aaa;
    SET @year = 2014;
    WHILE @year <= YEAR(CURDATE()) DO
        CREATE TEMPORARY TABLE IF NOT EXISTS aaa (Año int, Registrados int,  Activos int, Compraron int, Recurrentes int);
        INSERT INTO aaa 
        SELECT @year, registrados.count, activos.count, compraron.count, recurrentes.count FROM

        # Here is my query to get the data. With a WHERE that limits the creation date by @year. [YEAR(AU.created) <= @year] For example

    END WHILE;

    SELECT * FROM aaa;
END
我明白了

因此,月份(“2015-11-25”)等于月份(“2016-11-02”)

我看到两种方法。。。要么我找到一个函数,要么类似于:

MONTH_FROM_THE_BEGGINING_OF_TIMES('2016-11-02')
与按时间处理的日期类似,在本例中,通常返回从第1年开始的月份数,该月份数应类似于(2015*12)+11=24191

另一种方法是玩双人游戏。然后几天三倍的时间。这将产生O(n^3)的复杂性,这是不好的

任何想法都是非常受欢迎的


谢谢

您不能替换函数年,您只需添加函数月,就可以使用逻辑AND运算符按月获得结果。此外,在查询中,为了获取数据,您必须在group by中添加月份的和部分
这是获取与年份相关的月数的唯一方法。

您可能会喜欢MySQL的函数:

mysql> SELECT EXTRACT(YEAR_MONTH FROM CURDATE()) AS YM;
+--------+
| YM     |
+--------+
| 201608 |
+--------+
如果您想要几天,您可能会喜欢:


我不明白你想干什么。你是不是想在过去三年里每月都得到一些总价值?正确@比尔·卡温给了我答案:D@Alejandro,为什么不试试我给
EXTRACT()
函数的文档提供的链接并找出答案!:-)
MONTH_FROM_THE_BEGGINING_OF_TIMES('2016-11-02')
mysql> SELECT EXTRACT(YEAR_MONTH FROM CURDATE()) AS YM;
+--------+
| YM     |
+--------+
| 201608 |
+--------+
mysql> SELECT TO_DAYS(CURDATE()) AS days;
+--------+
| days   |
+--------+
| 736564 |
+--------+