MySql查询两个时间点之间的日期列表

统计数据时 , 会经常按月份或者天数来汇总数据 ; 但如果某几个月份或天数没有数据的时候 , 我们仍需返回一个空值 , 方法如下 :

1. 创建辅助数值序号表

DROP TABLE IF EXISTS `num`;
CREATE TABLE `num` (
  `i` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

------------------------------

INSERT INTO `num` VALUES ('16');
INSERT INTO `num` VALUES ('2');
INSERT INTO `num` VALUES ('3');
INSERT INTO `num` VALUES ('4');
INSERT INTO `num` VALUES ('5');
INSERT INTO `num` VALUES ('6');
INSERT INTO `num` VALUES ('7');
INSERT INTO `num` VALUES ('8');
INSERT INTO `num` VALUES ('9');
INSERT INTO `num` VALUES ('10');
INSERT INTO `num` VALUES ('11');
INSERT INTO `num` VALUES ('12');
INSERT INTO `num` VALUES ('13');
INSERT INTO `num` VALUES ('14');
INSERT INTO `num` VALUES ('15');
INSERT INTO `num` VALUES ('1');
INSERT INTO `num` VALUES ('17');
INSERT INTO `num` VALUES ('18');

2. 运行如下 SQL 语句 :

select date_format(adddate('2015-09-01', INTERVAL i MONTH),'%Y-%m') as date
from num where adddate('2015-09-01', INTERVAL i MONTH) <= date_format(curdate(),'%Y-%m-%d')
order by date;

3. 结果集如下 :

date
--------------
2015-10
2015-11
2015-12
2016-01
2016-02
2016-03
2016-04
2016-05
2016-06
2016-07
2016-08
2016-09
2016-10
2016-11
2016-12
2017-01
2017-02
2017-03

个人网站: Github , 欢迎点击给星

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值