MySql查詢兩個時間點之間的日期列表
阿新 • • 發佈:2019-01-28
統計資料時 , 會經常按月份或者天數來彙總資料 ; 但如果某幾個月份或天數沒有資料的時候 , 我們仍需返回一個空值 , 方法如下 :
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 , 歡迎點選給星