MySQL(DB)
[바미] Mysql 이전 날짜(특정날짜) 데이터 조회에 대하여
Bami
2022. 6. 21. 23:14
728x90
반응형
안녕하세요. 오늘은 Mysql에서 이전 이전 날짜 또는 특정 날짜를 조회할 때 유의 할 부분을 알려드리고 싶어 포스팅을 하게 되었습니다.
날짜 칼럼에 있는 데이터가 위와 같이 있습니다.
여기서 만약 1주 전, 1년 전 데이터를 조회 하고 싶을 때 보통 인터넷에 나와있는 코드는 아래와 같습니다.
// 1분전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 MINUTE)
// 10분전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -10 MINUTE);
// 한시간전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 HOUR);
// 하루전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 DAY);
// 한달전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 MONTH);
// 1년 전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 YEAR);
Date 칼럼의 데이터가 아까 보여드린 것과 같이 있을 때
1년 전 데이터를 조회할 때와 1달 전 데이터를 조회하는 쿼리의 결과는 같게 나옵니다. 확인해볼까요?
그 이유는
DATE_ADD(DATE(Now()), INTERVAL -1 MONTH);
부분의 값을 보면 알 수 있습니다. 위의 값을 확인하려면 앞에 SELECT를 넣어주면 됩니다.
현재 날짜로부터 1달 전 날짜인 5월 21을 출력하고,
현재 날짜로부터 1년 전인 날짜인 21년 06월 21일을 출력하고 있습니다.
그렇기 때문에
where DATE(Mydate) >= DATE_ADD(DATE(Now()), INTERVAL -1 MONTH);
mydate가 가지고 있는 date >= 2022-05-21
where DATE(Mydate) >= DATE_ADD(DATE(Now()), INTERVAL -1 YEAR);
mydate가 가지고 있는 date >= 2021-06-21
로 풀 수 있습니다. 값이 모두 만족하죠?
위에 보셨다시피 제가 가지고 있는 칼럼의 데이터는 22년 5월25 ~ 29일 데이터만 가지고 있습니다.
그렇기 때문에 위의 값이 모두 만족하기 때문에 1년 전 데이터를 가지고 오고 싶어도 엉뚱한 데이터를 가져오게 되고,
만약 데이터 삭제를 위한 SQL문이였다면 엉뚱한 데이터를 지워버리게 될 것입니다.
그래서 해당 날짜에 맞는 데이터를 조회하는 목적이시라면
// 1분전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 MINUTE)
// 10분전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -10 MINUTE);
// 한시간전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 HOUR);
// 하루전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 DAY);
// 한달전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 MONTH);
// 1년 전 데이터 조회
SELECT * FROM 테이블명
where 시간칼럼명 = DATE_ADD(NOW(), INTERVAL -1 YEAR);
위와 같이 '='연산자를 사용하시는 것을 추천드립니다.
728x90
반응형