-- 특정 월의 N번째 특정 요일에 해당하는 날짜 찾기

DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,[특정 요일을 구하는 경우의 N번째주에 존재할 수 있는 최대일수]-datepart(day,[MONTH]),[MONTH])), [DAY])

ㄴ [특정 요일을 구하는 경우의 N번째주에 존재할 수 있는 최대일수] 

ex1) 일요일 => 첫번째주:7, 두번째주:14, 세번째주:21, 네번째주:28 

ex2) 월요일 => 첫번째주:6, 두번째주:13, 세번째주:20, 네번째주:27 

ex3) 화요일 => 첫번째주:5, 두번째주:12, 세번째주:19, 네번째주:26 

ex4) 수요일 => 첫번째주:4, 두번째주:11, 세번째주:18, 네번째주:25

ex5) 목요일 => 첫번째주:3, 두번째주:10, 세번째주:17, 네번째주:24

ex6) 금요일 => 첫번째주:2, 두번째주:9, 세번째주:16, 네번째주:23

ex7) 토요일 => 첫번째주:1, 두번째주:8, 세번째주:15, 네번째주:22

ㄴ [MONTH]: 찾고자 하는 월의 날짜 (데이터타입은 datetime 또는 'yyyyMMdd')

ㄴ [DAY]: 찾고자 하는 요일의 값 (-1:일요일, 0:월요일, 1:화요일, 2:수요일, 3:목요일, 4:금요일, 5:토요일)

 

 

예) 

-- 이번달의 1~4번째 일요일에 해당하는 날짜 찾기

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,7-datepart(day,getdate()),getdate())), -1) -- 첫번째 일요일 날짜

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,14-datepart(day,getdate()),getdate())), -1) -- 두번째 일요일 날짜

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,21-datepart(day,getdate()),getdate())), -1) -- 세번재 일요일 날짜

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,28-datepart(day,getdate()),getdate())), -1) -- 네번째 일요일 날짜

 

-- 이번달의 1~4번째 화요일에 해당하는 날짜 찾기

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,5-datepart(day,getdate()),getdate())), -1) -- 첫번째 화요일 날짜

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,12-datepart(day,getdate()),getdate())), -1) -- 두번째 화요일 날짜

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,19-datepart(day,getdate()),getdate())), -1) -- 세번재 화요일 날짜

select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,26-datepart(day,getdate()),getdate())), -1) -- 네번째 화요일 날짜

 

 

 



출처: https://soohyeon317.tistory.com/entry/MSSQL-특정-월의-N번째-특정-요일에-해당하는-날짜-찾기 [Dean Story]

 

MSSQL 특정 월의 N번째 특정 요일에 해당하는 날짜 찾기

>참고: http://www.dbguide.net/dbqna.db?cmd=view&boardUid=143789&boardConfigUid=31&boardStep=0&categoryUid=206 >참고: https://www.codeproject.com/Tips/81400/Useful-DateTime-Functions -- 특정 월의 N번..

soohyeon317.tistory.com

 

Posted by 요지
,