получить все даты между двумя датами на основе интервала - sql

0

У меня есть дата начала и дата окончания, я хочу получить все даты между этими двумя датами на основе интервала. eg: start date:01-04-2018 and end date :20-04-2018 and interval is 3 я хочу, например, 01-04-2018, 04-04-2018, 07-04-2018... и т.д., используя sql и сохранить вывод в таблице.

  • 0
    У вас есть все эти даты в любой таблице?
  • 0
    у меня есть только start_date, end_date и interval
Показать ещё 2 комментария
Теги:
date

1 ответ

0

Mysql не позволяет получить такой результат только по запросу,

Вы можете создать одну процедуру и вставить в 1 таблицу, которую вы можете использовать для своих дат.

Попробуйте что-нибудь вроде

DELIMITER $$

DROP PROCEDURE IF EXISTS 'calendar' $$

CREATE PROCEDURE 'calendar'(
IN startDate DATE , 
IN endDate DATE , 
IN inter INT(1))

BEGIN
     CREATE TABLE IF NOT EXISTS 'calendar' ('date' DATE);
     DELETE FROM 'calendar';

     WHILE startDate <= endDate DO
    INSERT INTO calendar VALUES(startDate);
    SET startDate := DATE_ADD(startDate, INTERVAL inter DAY);
     END WHILE ;

 END$$

DELIMITER ;


CALL calendar('2018-04-01','2018-04-30',1);

SELECT * FROM calendar;

Теперь таблица календаря имеет все даты на основе ваших startDate, endDate и интервала.

Вы можете попробовать Демо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню