Po niżej zapytanie generujące okres miesiąca dla całego roku :
SELECT cast(DATEADD(DD, - (DAY(cast('2022-01-12' AS DATETIME) - 1)), cast('2022-01-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-01-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-01-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-02-12' AS DATETIME) - 1)), cast('2022-02-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-02-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-02-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-03-12' AS DATETIME) - 1)), cast('2022-03-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-03-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-03-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-04-12' AS DATETIME) - 1)), cast('2022-04-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-04-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-04-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-05-12' AS DATETIME) - 1)), cast('2022-05-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-05-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-05-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-06-12' AS DATETIME) - 1)), cast('2022-06-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-06-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-06-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-07-12' AS DATETIME) - 1)), cast('2022-07-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-07-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-07-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-08-12' AS DATETIME) - 1)), cast('2022-08-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-08-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-08-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-09-12' AS DATETIME) - 1)), cast('2022-09-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-09-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-09-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-10-12' AS DATETIME) - 1)), cast('2022-10-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-10-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-10-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-11-12' AS DATETIME) - 1)), cast('2022-11-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-11-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-11-12' AS DATETIME))) AS DATE) AS LastDate
union
SELECT cast(DATEADD(DD, - (DAY(cast('2022-12-12' AS DATETIME) - 1)), cast('2022-12-12' AS DATETIME)) AS DATE) AS FirstDate, cast(DATEADD(DD, - (DAY(cast('2022-12-12' AS DATETIME))), DATEADD(MM, 1, cast('2022-12-12' AS DATETIME))) AS DATE) AS LastDate