MySQL 이번주의 요일별 날짜를 가져오기
MySQL 에서 지원해주는 날짜 함수 세가지를 조합해서 이번주의 월화수목금토일에 해당하는 날짜가 몇일인지 알아보겠습니다.
1. WEEKDAY 함수는 월요일은 0 부터해서 일요일은 6 을 반환해 주는 함수입니다.
2. ADDDATE(date, INTERVAL EXPR) : ADDDATE 함수는 지정한 날짜(date)에 INTERVAL EXPR를 더한 날짜를 반환합니다.
3. CURDATE() : 현재 날짜를 반환하는 함수입니다. 현재 날짜와시간까지 반환하는 SYSDATE() 함수를 사용하셔도 됩니다.
오늘의 요일 구하기
SELECT WEEKDAY( CURDATE());
실행화면
실행결과 2가 반환되었으니 오늘은 수요일인가 봅니다.
이번주의 월요일 구해보기
SELECT ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) ) AS MONDAY;
이해 되시나요? 오늘의 날짜가 2016-01-20일로 수요일이라면 WEEKDAY(CURDATE())로
반환된 값 2 를 빼주시면 월요일이 구해집니다.
실행화면
정확히 이번주의 월요일의 날짜가 나왔습니다.
그럼 이번주의 요일별 날짜를 모두 구해보겠습니다. 아쉽게도 아래와 같이 약간의 노가다가 필요합니다.
SELECT ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 0 ) AS MONDAY,
ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 1 ) AS TUESDAY,
ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 2 ) AS WEDNESDAY,
ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 3 ) AS THURSDAY,
ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 4 ) AS FRIDAY,
ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 5 ) AS SATURDAY,
ADDDATE( CURDATE(), - WEEKDAY(CURDATE()) + 6 ) AS SUNDAY;
위의 코드를 MySQL내에서 모두 입력하기에는 피곤한 일이니 sql 파일로 만들어서 MySQL 내에서 실행해 보겠습니다.
아래는 실행화면입니다. 정확히 요일별 날짜가 구해졌습니다.
위의 예제는 다음과 같은 버전에서 실행하였습니다.