mySQL에서 DATE 타입을 저장할 때 년도, 월, 일, 시, 분, 초 까지 저장하는 경우가 많을 것이다.
(default를 NOW()로 때리면 저렇게 저장됨 → ex) 2020-05-05 01:43:00 )
그래서 특정 날짜에 대해서 조회를 하고 싶은데 뒤에 시간까지 저장되기 때문에 값을 제대로 못불러오는 경우가 생긴다.
SELECT * FROM example WHERE eDate = NOW(); -- example테이블과 eDate는 지금 임의로 만든 폰테이블임
이렇게 조회했는데 년월일은 동일해도 시간은 동일하지 않아 결과가 불러와지지 않는 것이다.
그럼 mySQL에서 날짜만 비교해 해당 값을 들고올 수 있는 방법은 무엇일꺄
별 것 없다.
SELECT * FROM example WHERE DATE(eDate) = DATE(NOW());
DATE()로 감싸주면 된다.
그럼 자동으로 yyyy-mm-dd값만 반환된다.
특정 날짜를 조회하고 싶다면?
SELECT * FROM example WHERE DATE(eDate) = '2021-05-02';
이렇게 해도 됨
글 적으면서 생각난건데 특정 년도만. 월만, 요일만 검색하고 싶다면 DATE_FORMAT()을 이용해서 검색해도 되지 않으려나....??
2021년만 검색하고 싶다면
SELECT * FROM example WHERE DATE_FORMAT(eDate,'%Y') = '2021';
3월만 검색하고 싶다면
SELECT * FROM example WHERE DATE_FORMAT(eDate,'%m') = '03';
SELECT * FROM example WHERE DATE_FORMAT(eDate,'%M') = 'March';
이런 식으로....?
사실 mySQL다시 키기 귀찮아서 글로만 남겨놓는거지만... 나중에 해보고 후기를 추가해야겠다!
%Y, %m, %M, %d 등... 많은 날짜 지정값이 있다. 해당 내용은 검색창에 mySQL 날짜포맷 이런식으로 검색하면 정보가 많이 나옴