如果有权限对数据库进行修改操作可以使用以下方法生成日期:
CREATE TABLE num (i INT);
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
SELECT ADDDATE(‘2018-01-01’, numlist.id) AS ‘date’ FROM
(SELECT n1.i + n10.i10 + n100.i100 AS id FROM num n1 CROSS JOIN
num AS n10 CROSS JOIN num AS n100) AS numlist
WHERE ADDDATE(‘2018-01-01’, numlist.id) <= DATE_FORMAT(CURDATE(),’%Y-%m-%d’);
如果没有权限对数据库进行修改操作可以使用以下方法生成日期:
select @num:=@num+1,date_format(adddate('2019-01-01', INTERVAL @num DAY),'%Y-%m-%d') as date
from table_name,(select @num:=0) t where adddate('2019-01-01', INTERVAL @num DAY) <= date_format(curdate(),'%Y-%m-%d')
order by date;
注意:如果想让日期显示全,必须保证table_name中有足够多的数据,如果表中只有10条数据,那么只能显示10天的日期
本文介绍两种在数据库中生成日期序列的方法:一种适用于拥有修改数据库权限的用户,通过创建临时表并利用CROSS JOIN生成日期;另一种适用于无修改权限的用户,使用变量递增结合DATE_FORMAT和ADDDATE函数生成日期。这些技巧对于数据处理和报表生成非常实用。
2787

被折叠的 条评论
为什么被折叠?



