gpt4 book ai didi

mysql获取与年份无关的月份数

转载 作者:行者123 更新时间:2023-11-29 05:11:11 25 4
gpt4 key购买 nike

我需要在过去 3 年中逐月获得结果。这是我的:

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

它工作了很多年。但是我需要几个月甚至几周和几天才能得到结果。

我的问题是,如果我用 MONTH 或 DAY 替换 YEAR 函数,这些函数将返回一个从字面上取自日期的数字(相对于较大的分隔符)

例如来自

MONTH('2015-11-25') 

我明白了

11

所以 MONTH('2015-11-25') 等于 MONTH('2016-11-02')

我看到了两种方式......要么我找到一个函数或类似的东西:

MONTH_FROM_THE_BEGGINING_OF_TIMES('2016-11-02')

这类似于 TIME 处理的日期,在这种情况下通常返回从第 1 年开始的月份数,应该类似于 (2015 * 12) + 11 = 24191

另一种方法是使用 double WHILE。然后连续几天三倍。这将产生 O(n^3) 的复杂度,这是不好的。

非常欢迎任何想法。

谢谢

最佳答案

您可能喜欢 MySQL 的 EXTRACT()功能:

mysql> SELECT EXTRACT(YEAR_MONTH FROM CURDATE()) AS YM;
+--------+
| YM |
+--------+
| 201608 |
+--------+

如果你想要几天,你可能会喜欢TO_DAYS() :

mysql> SELECT TO_DAYS(CURDATE()) AS days;
+--------+
| days |
+--------+
| 736564 |
+--------+

关于mysql获取与年份无关的月份数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com