Flower@12 Ответов: 1

Как генерировать дни, используя месяц и год только в SQL


Я использую sql server 2005 и мне нужно генерировать дни в sql используя месяц и год только в sql


Я ожидаю, что ответ будет таким:
Мой ввод в sql - '03/2019'

Ожидаемый Результат:-
01-03-2019
02-03-2019
'
'
'
'
'
'

'
'31-03-2019
Как это сделать?

Что я уже пробовал:

Я уже использовал с датой начала и окончания для генерации дней

declare @StartDate as datetime
declare @EndDate as datetime

set @StartDate='03/01/2019'
set @EndDate='03/06/2019'

;WITH    AllDays      
AS ( SELECT   @StartDate AS EntryDate, (CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) AS [issunday]      
   UNION ALL      
   SELECT   DATEADD(DAY, 1, EntryDate),(CASE WHEN DATENAME(dw,  DATEADD(DAY, 1, EntryDate)) = 'Sunday' THEN 1 ELSE 0 END)      
   FROM     AllDays      
   WHERE    EntryDate < @EndDate )      
SELECT EntryDate, [issunday] into #tempX   
FROM   AllDays OPTION (MAXRECURSION 0)  

Select * from #TempX

Gerry Schmitz

Попробуйте "что-то", потому что никто не имеет понятия, как вы планируете получить "вход" или "выход".

Patrice T

Покажи свой код.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

[no name]

обновлено сэр

1 Ответов

Рейтинг:
2

OriginalGriff

Вместо того чтобы восстанавливать его каждый раз, я бы предварительно сгенерировал его: две таблицы, содержащие два столбца: месяц и день, со строкой для каждого дня года (вторая таблица предназначена для високосных лет)
Тогда это просто случай разделения даты на @месяц и @год, а затем с помощью простого выбора в правильной таблице:

SELECT Day + '-' + Month + '-' + @YEAR FROM MonthNonLeapYear WHERE Month=@Month
Гораздо эффективнее, чем циклы или CTE и временные таблицы.