Development/Python
[MySQL] 주별로 쿼리 조회
곽진돔
2023. 4. 12. 15:06
오라클에는 아래 쿼리처럼, 함수가 있어서 포맷만 지정하면 편하게 사용할 수 있지만 mysql 에서 주별로 데이터를 조회하려면 함수가 없어서 직접 작성해주어야한다.
SELECT d "Original Date",
trunc(d) "Nearest Day, Time Removed",
trunc(d, 'ww') "Nearest Week",
trunc(d, 'iw') "Start of Week",
trunc(d, 'mm') "Start of Month",
trunc(d, 'year') "Start of Year"
FROM dates;
SQL Language Reference
docs.oracle.com
그래서 아래처럼, 날짜를 계산해서 넣어주는 방식을 이용한다. 계산한 컬럼값을 concat으로 합쳐서 반환하여 조회할 수 있다.
기존 코드
concat( date_format(sd_ymd,'%Y %m '), weekofyear(sd_ymd) - weekofyear(LAST_DAY(sd_ymd - interval 1 month) +
interval 1 DAY ) +1 ) as sd_ymd ,
다른 월은 잘 출력 되었으나1월에서 오류 발생
- LAST_DAY() : 인자값의 마지막일을 반환하는 함수
변경한 코드
concat( date_format(sd_ymd,'%Y %m '), WEEK(sd_ymd, 5) - WEEK(DATE_SUB(sd_ymd, INTERVAL DAYOFMONTH(sd_ymd) - 1 DAY), 5) + 1 ) as sd_ymd ,
- DATE_SUB() : 시간 빼기