다음과 같이 1 주일 동안이 사이트에서 코드를 얻었습니다. 주일을 채우고 금요일과 토요일로 시작 날짜를 기입해야합니다. 일주일이 끝나면 다음 주에 날짜를 입력해야합니다. 어떻게하면이 도움을 얻을 수 있습니까? 2013 년 토요일은 주일의 첫날 인에 따라 주 번호를 줄 것이다 정말 당신이 요구하는지 모르겠지만,이 위의 쿼리를 기반으로토요일로 전체 주간 시작일을 표시합니다.
DECLARE @Year INT=2013;
DECLARE @start DATE;
--DECLARE @WK INT=2
SET @start = DATEADD(YEAR, @Year-1900, 0);
;WITH n AS
(
SELECT TOP (366) -- in case of leap year
TDate = DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY name)-1, @start)
FROM sys.all_objects
),
x AS
(
SELECT md = MIN(TDate) FROM n
WHERE DATEPART(WEEKDAY, TDate) = 7 -- assuming DATEFIRST is SATURDAY
),
y(TDate,wk) AS
(
SELECT n.TDate, ((DATEPART(DAYOFYEAR,n.TDate)-
DATEDIFF(DAY, @start,x.md)-1)/7)+1
FROM n CROSS JOIN x
WHERE n.TDate >= x.md
AND n.TDate < DATEADD(YEAR, 1, @start)
)
SELECT [date] = TDate, [week] = wk
FROM y WHERE wk < 53
ORDER BY [date];
귀하의 질문에 대한 이해가되지 않습니다. 결과물은 무엇입니까? 그리고 복잡한 쿼리 대신 [calendar table] (http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html)을 사용해 보셨습니까? 아니면 이것은 달력 표를 채우기위한 것입니까? – Pondlife