Я перевожу старые системы отчетности на современную кодовую базу Java и наткнулся на хранимую процедуру Microsoft Sql Server, которая генерировала таблицу с датами (Year, Period, WeekStarting, WeekEnding). Мне нужно перенести этот код в Java и сделать его динамическим c, а не генерировать его в виде таблицы и занимать место в БД.
Обращаться за помощью к Sql эксперту по серверу для помогите мне понять, как эти даты получены, и особенно числа в столбце Period
USE [Reporting]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GenDataforPeriodsTable]
@enddate VARCHAR(10)
AS
DECLARE @startdate VARCHAR(10)
BEGIN
SET NOCOUNT ON;
SELECT @startdate = DATEADD(DAY, 1, MAX(WeekEnding)) FROM Periods;
WITH CTE_DatesTable
AS
(
SELECT CAST(@startdate as date) AS tempdate
UNION ALL
SELECT DATEADD(dd, 1, tempdate)
FROM CTE_DatesTable
WHERE DATEADD(dd, 1, tempdate) <= @enddate
)
INSERT INTO Periods (YEAR, Period, WeekStarting, WeekEnding)
SELECT YEAR(tempdate) as Year, MONTH(DATEADD(DAY, -3, tempdate)) as Period,
DATEADD(DAY, -6, tempdate) as WeekStarting, tempdate as WeekEnding
FROM CTE_DatesTable
WHERE DATENAME(weekday, tempdate) = 'SUNDAY'
OPTION (MAXRECURSION 0)
END
GO
он генерирует таблицу следующим образом: