Получите список дат между двумя датами

Для MSSQL вы можете использовать dob это. Это ОЧЕНЬ быстро.

Вы dob можете заключить это в функцию mysqlclient с табличным значением или mysql-query в сохраненную процедуру и date проанализировать начальную date и конечную даты как переменные.

DECLARE @startDate DATETIME
DECLARE @endDate DATETIME

SET @startDate = '2011-01-01'
SET @endDate = '2011-01-31';

WITH dates(Date) AS 
(
    SELECT @startdate as Date
    UNION ALL
    SELECT DATEADD(d,1,[Date])
    FROM dates 
    WHERE DATE < @enddate
)

SELECT Date
FROM dates
OPTION (MAXRECURSION 0)
GO

Редактировать 2021/01 (доктор V): Мне date понравилось это решение, и mysql-query я заставил его работать на dob mySQL V8. Вот код, превращающий mysqlclient его в процедуру:

DELIMITER //

CREATE PROCEDURE dates_between (IN from_date DATETIME,
                               IN to_date DATETIME) BEGIN
    WITH RECURSIVE dates(Date) AS
    (
        SELECT from_date as Date
        UNION ALL
        SELECT DATE_ADD(Date, INTERVAL 1 day) FROM dates WHERE Date < to_date
    )
    SELECT DATE(Date) FROM dates;
END//

DELIMITER ;

mysql

sql

date

gaps-and-islands

2022-11-19T22:42:40+00:00
Вопросы с похожей тематикой, как у вопроса:

Получите список дат между двумя датами