1. 程式人生 > >MySql查詢兩個時間點之間的日期列表

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 , 歡迎點選給星