mysql遍历一段时间内的所有日期、月份

  • 遍历一段时间内的所有月份
SELECT DISTINCT
	date_format(
		DATE_ADD(
			'2019-06-30' ,
			INTERVAL id MONTH
		),
		'%Y-%m'
	) AS `TIME`
FROM
	bbkb_busticket.time
WHERE
	DATE_ADD(
		'2019-06-30' ,
		INTERVAL id MONTH
	) <= '2020-06-30'
ORDER BY time
  • 遍历一段时间内的所有日期
SELECT DISTINCT
	date_format(
		DATE_ADD(
			'2019-06-30' ,
			INTERVAL id day
		),
		'%Y-%m-%d'
	) AS `TIME`
FROM
	bbkb_busticket.time
WHERE
	DATE_ADD(
		'2019-06-30' ,
		INTERVAL id day
	) <= '2020-06-30'
ORDER BY time

注:time为数据量足够大的表,行数必须大于时间跨度(天),如示例time表需大于等于366行。

time表

CREATE TABLE `time` (
  `id` int(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入366个id

DELIMITER ;; 
CREATE  PROCEDURE time_creater()
BEGIN
	#Routine body goes here...
	DECLARE a INT DEFAULT 1 ;
	while a < 367
	DO
		INSERT into time(`id`) values (a);
		set a = a+1;
	END WHILE;
END;;
call time_creater();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值