mysql - 如何获取两个日期之间的月份

标签 mysql mysql-workbench

我想获取两个日期之间的月份列表,例如 2013-04-01 和 2014-03-07 输出应该是这样的

month  
April
may
june
.
.
.
March

最佳答案

我的建议很简单:

创建过程/函数

DELIMITER $$

USE `urlopy`$$

DROP PROCEDURE IF EXISTS `dowhile`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `dowhile`(dt_start DATE,dt_stop DATE)
BEGIN
  DECLARE v1 INT DEFAULT 0;

CREATE TEMPORARY TABLE tmp (
  `month_name` VARCHAR(256) DEFAULT NULL,
  `date_change` DATE DEFAULT NULL
) ENGINE=MYISAM DEFAULT CHARSET=utf8  ;  


  SELECT TIMESTAMPDIFF(MONTH, dt_start, dt_stop)+1  INTO v1;
  WHILE v1 > -1 DO
    INSERT tmp (SELECT MONTHNAME( ADDDATE(dt_start, INTERVAL v1 MONTH) ),ADDDATE(dt_start, INTERVAL v1 MONTH) );
    SET v1 = v1 - 1;
  END WHILE;

SELECT * FROM tmp;  
DROP TEMPORARY TABLE IF EXISTS tmp;  

    END$$

DELIMITER ;

然后调用它

CALL dowhile('2012-05-05', '2013-06-04');

关于mysql - 如何获取两个日期之间的月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18735431/

相关文章:

mysql - 在 SQL 中拆分名称

MySQL Workbench 无法在 Windows 上打开

php - 帮助创建正确的 CASE 语句

php - XAMPP 服务器使用多个端口而不是端口 80

mysql - 生成数据摘要,MySQL中多列的行数

java - 将 Eclipse 与 MySQL 集成

php - 如何从 2 个表合并

mysql - 如何获取每次更新查询中mysql受影响的行数

javascript - JS Node 仅返回数字而不返回正确的值

mysql - sql工作台在运行连接后添加行