반응형
이번 달 데이터 가져오기
데이터 출력 시 단순 한 달 전 기준이 아닌, 이번 달에 생성된 데이터만 가져와야 하는 경우가 있다.
이전 달 마지막 날짜를 구하여 계산해도 되고, 이번 달의 첫째 날짜를 구하여 계산해도 된다.
MySQL에서는 last_day() 함수는 존재하지만 first_day() 함수는 존재하지 않는다. 대체 왜...
이번 달 첫째 날짜 구하기
해당 방법은 날짜 포맷이 정해져 있는 경우에 사용한다. 신나서 쿼리를 작성했으나 그리 좋은 방법은 아니라고 생각된다. 이전 달 마지막 날짜를 구하여 이번 달 데이터만 출력하는 것이 좋아 보인다.
select date_format(now(), '%Y-%m-01') from dual;
데이터 포맷 형식이 % Y-%m-%d라고 가정하였을 때의 쿼리이다.
※ 2022년인 경우, %y는 22(년도 뒤의 두 자리)만 출력하고 %Y는 2022를 전부 출력한다.
데이터 출력 형식에 01을 넣어 하드 코딩한 것이다.
select ~ from ~
where regdate between date_format(now(), '%Y-%m-01') and date_format(now(), '%Y-%m-%d');
regdate 칼럼이 데이터가 입력된 날짜라고 가정하였을 때, where 구문을 위와 같이 작성하면 이번 달에 저장된 데이터 값만 뽑아올 수 있다.
이전 달 마지막 날짜 구하기
이전 달의 마지막 날짜를 구하는 것은 last_day() 함수를 사용하면 되므로 간편하다.
select last_day(now() - interval 1 month) from dual;
select ~ from ~
where regdate > last_day(now() - interval 1 month)
and regdate <= now();
이번 달 첫째 날짜를 이용해 이번 달 데이터만을 구하는 것과의 차이점은 between ~ and ~ 구문을 사용하지 않는다는 것이다. 그리고 하드코딩을 하는 부분도 없다.
반응형