2012-12-04 5 views
0

"이 이벤트는 이달의 두 번째 및 네 번째 수요일에 발생합니다."또는 "이 이벤트는 매월 홀수 번째 토요일에 발생합니다 (예 : 1 일 , 3rd, 5th Saturday).T-SQL DateMath : 주어진 날짜에 대해 month에있는 dayname의 발생을 찾습니다. 세 번째 토요일

이 목적을 위해 T-SQL에서 Date 입력을 사용하는 함수를 작성해야하고 dayname의 해당 달에 해당하는 일을 나타내는 정수를 반환해야합니다.

예를 들어 2012 년 12 월 21 일 함수를 보내면 2012 년 12 월 21 일이 그 달의 3 번째 금요일에 해당하므로 3을 반환합니다 .12 월 29 일에 2012 년 12 월 29 일부터 5를 반환합니다. 그 달의 5 번째 토요일입니다.

미리 채워진 달력 표를 사용하지 않고이 작업을 수행하고 싶습니다. 이 기능을 사용하여 과거 날짜에 대한 작업을 할 수 있습니다. 1958 년 7 월 16 일 어느 수요일을 계산 했는가?

+0

'datepart'를 사용하여 작업 할 수 있다고 생각합니다. 'dw'는 원하는 달의 첫 달과 함께 있지만, 구현을 시도하기 위해 SQL Server가 설치된 컴퓨터 앞에 없습니다. 그래도 시작할 수있는 곳입니다. – Donnie

답변

1

이 시도 :

SELECT ((DATEPART(d, @input) - 1)/7) + 1 

우리는 일주일의 실제 일, 월의 첫 번째 지난날의 단지 수에 대한 상관 없어 (하루 값이다 - 1). 그런 다음 정수를 7로 나누어 주일의 숫자를 얻고을 0이 아닌 1에서 시작하도록합니다.