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 |
+--------+