날짜에 주 번호를 추가하는 쉬운 방법
덕분에 (MSDN DATEADD)
DATEADD(wk, @StartDate, @recurrenceValue1)
날짜 당신이보고되는 요일을 확인하려면 사용하는 것입니다 당신이 기능은 첫 번째 (http://msdn.microsoft는 요일 결정 DATEFIRST를 사용 (MSDN DATEPART)
DATEPART(dw, @StartDate)
사용할 수 있습니다에 속한다. COM/EN-US/라이브러리/ms181598.aspx) 문제에 대한 그래서
SET DATEFIRST 1 --Where 1 = Monday and 7 = Sunday
(DATEFIRST가 1로 설정되는 = 월요일) ..
SET DATEFIRST 1
declare @StartDate datetime -- when the job first recurs
declare @recurrenceValue1 int -- amount of weeks
declare @recurrenceValue2 int -- day of week (mon-sun)
declare @NextOcurrance datetime -- when the job will recur
SET @StartDate = '2011-12-16' -- This is a Friday
SET @recurrenceValue1 = 2 -- In 2 weeks
SET @recurrenceValue2 = 2 -- On Tuesday
SET @NextOcurrance = DATEADD(wk, @recurrenceValue1, @StartDate) -- Add our 2 weeks
/* Check if our incrementation falls on the correct day - Adjust if needed */
IF (DATEPART(dw, @NextOcurrance) != @recurrenceValue2) BEGIN
DECLARE @weekDay int = DATEPART(dw, @NextOcurrance)
SET @NextOcurrance = DATEADD(dd, ((7 - @weekDay) + @recurrenceValue2), @NextOcurrance) -- Add to @NextOcurrance the number of days missing to be on the requested day of week
END
추가 할 수있는 일의 수에 대한 논리 다음과 같습니다 : 우리는 일주일에 7 일, 이번 주말까지 몇 일이 걸릴 수 있습니다. @recurrenceValue2에이 일수를 추가하십시오 (우리가 찾고있는 요일).
추신 : 내 평판 때문에 2 개 이상의 하이퍼 링크를 게시 할 수 없습니다. 이것이 DATEFIRST URL이 일반 텍스트로 된 이유입니다.
다음은 특정 날짜를 다르게 처리 할 수있는 코드입니다. 이 코드는 고유 한 날짜에만 유용합니다. 예를 들어 일주일을 건너 뛸 필요가있는 경우이 코드를 사용하면이주의 각 요일별 값을 건너 뛸 필요가 있습니다. 고유 일 이외의 범위의 경우이 코드는 날짜 범위 또는 특정 주 및/또는 요일을 처리하도록 수정해야합니다.
CREATE TABLE OccurenceExclusions (
ExclusionDate DATE not null,
NumberOfDaysToAdd int not null
PRIMARY KEY (ExclusionDate)
)
INSERT OccurenceExclusions VALUES ('2012-01-01', 7)
SET @NextOcurrance = DATEADD(dd, COALESCE((SELECT NumberOfDaysToAdd
FROM OccurrenceExclusions
WHERE ExclusionDate = @NextOcurrance), 0), @NextOcurrance)
인가? –
안녕하세요, 그렇습니다 - sqlserver2008을 사용 중입니다 – anna
화요일 _'fore Wednesday + 2 weeks '또는 화요일 _after_after Wednesday + 2 weeks?를 원하십니까?누군가가 화요일에 첫 번째 '되풀이'날짜를 가졌지 만 그 요일이 수요일로되어 있다면 그 변화가 발생합니까? 함수를 작성하려고하거나 스케줄링 서비스 용 데이터를 저장하려고합니까? 그렇다면 스키마는 무엇이며 변경할 수 있습니까? –