>참고: 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번째 특정 요일에 해당하는 날짜 찾기
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) -- 네번째 화요일 날짜
'IT > DB' 카테고리의 다른 글
Shared/Exclusive Lock 개념 (0) | 2019.10.24 |
---|---|
Isolation(격리) Level에 대한 정리 (0) | 2019.10.24 |
JOIN ON 절과 WHERE 절에 IS NULL 조건 사용 시의 차이점 (0) | 2018.09.20 |
ACID (트랜잭션의 특성 관련..) (0) | 2018.02.14 |
Index Scan vs Index Seek (0) | 2018.01.27 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!