declare @start_date as datetime = '12/31/2014'
declare @end_date as datetime = '02/15/2015'
;with cte as (
select
datename(month,@start_date) as [mnth_nm],
month(@start_date) as [mnth_no],
@start_date as dat,
DATEADD(DAY, -1 * DAY(@start_date) + 1, @start_date) as [first_day],
DATEADD(dd, -DAY(DATEADD(mm, 1, @start_date)), DATEADD(mm, 1, @start_date)) as [last_day]
union all
select
datename(month, DateAdd(Month, 1, dat)),
month(dat) + 1 as [mnth_no],
DateAdd(Month, 1, dat),
DATEADD(MONTH, 1, [first_day]),
DATEADD(dd, -DAY(DATEADD(mm, 1, dat)),
DATEADD(mm, 1, dat)) + 1
from
cte
where
DateAdd(Month,1,dat) < @end_date
)
select
[mnth_nm], [mnth_no], @start_date, [first_day], [last_day]
from
CTE
В приведенном выше КТР требуемый результат должен давать выходные данные за декабрь, январь и февраль в зависимости от даты начала и окончания.Рассчитать номер месяца, имя месяца, первый день месяца (дату) и последний день месяца (дату), используя общее выражение таблицы в sql-сервере?
Добро пожаловать в StackOverflow: если вы разместите код, XML или данных образцов, пожалуйста ** * * выделите эти строки в текстовом редакторе и нажмите кнопку «образцы кода» ('{}') на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –
Sure Marc благодарит за редактирование ... – Badal
Почему это помечено как для Oracle, так и для SQL Server (и двух разных версий SQL Server)? Код выглядит как T-SQL, поэтому я бы предположил, что тег Oracle должен быть удален. –