Alter procedure [dbo]. [ST_GetCalendar_S]
@ Year INT,
@ Month INT
AS
BEGIN
DECLARE @ Inmonth as varchar (7)
SET @ Inmonth = CONVERT (VARCHAR, @ Year) + '-' + CONVERT (VARCHAR, @ Month)
DECLARE @ a table (id int identity (0, 1), date datetime)
Insert into @ a (date)
Select top 31 @ Inmonth + '-01' FROM sysobjects
UPDATE @ a set date = dateadd (dd, id, date)
Select day, one, two, three, four, five, six
From
(
Select week,
Max (case weekday when 1 then datename (day, dt) else ''end) 'day ',
Max (case weekday when 2 then datename (day, dt) else ''end) '1 ',
Max (case weekday when 3 then datename (day, dt) else ''end) '2 ',
Max (case weekday when 4 then datename (day, dt) else ''end) '3 ',
Max (case weekday when 5 then datename (day, dt) else ''end) '4 ',
Max (case weekday when 6 then datename (day, dt) else ''end) '5 ',
Max (case weekday when 7 then datename (day, dt) else ''end) '6'
From
(
Select week = datepart (week, m. dt), weekday = datepart (weekday, m. dt), dt from
(
Select dt = date
FROM @
Where date <dateadd (month, 1, @ Inmonth + '-01 ')
) M
) N
Group by week
) O
END