39 lines
927 B
SQL
39 lines
927 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`time_generate`(vStarted DATE, vEnded DATE)
|
|
BEGIN
|
|
/**
|
|
* Generate a temporary table between the days passed as parameters
|
|
*
|
|
* @param vStarted Start date
|
|
* @param vEnded End date
|
|
* @table tmp.time (dated, dayed, weeked, monthed, yeared)
|
|
*/
|
|
DECLARE vCurrentDate DATE;
|
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tmp.time(
|
|
dated DATE PRIMARY KEY,
|
|
`day` INT,
|
|
`week` INT,
|
|
`month` INT,
|
|
`year` INT
|
|
) ENGINE = MEMORY;
|
|
|
|
IF(vStarted > vEnded) THEN
|
|
CALL throw('The started cannot be later than the ended');
|
|
END IF;
|
|
|
|
SET vCurrentDate = vStarted;
|
|
|
|
WHILE vCurrentDate <= vEnded DO
|
|
INSERT INTO tmp.time
|
|
SET dated = vCurrentDate,
|
|
`day` = DAY(vCurrentDate),
|
|
`week` = WEEK(vCurrentDate),
|
|
`month` = MONTH(vCurrentDate),
|
|
`year` = YEAR(vCurrentDate);
|
|
|
|
SET vCurrentDate = vCurrentDate + INTERVAL 1 DAY;
|
|
END WHILE;
|
|
END$$
|
|
DELIMITER ;
|