"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > date_format을 사용한 MySQL 날짜 비교가 예상치 못한 결과를 낳는 이유는 무엇입니까?

date_format을 사용한 MySQL 날짜 비교가 예상치 못한 결과를 낳는 이유는 무엇입니까?

2024년 11월 12일에 게시됨
검색:597

Why Is MySQL Date Comparison with date_format Yielding Unexpected Results?

date_format으로 MySQL 날짜 비교

여러 날짜 비교 방법을 시도했지만 사용자가 예상치 못한 결과를 만났습니다. 그들은 '%d-%m-%Y' 형식의 날짜를 비교하려고 했지만 결과 집합에 잘못된 기록이 포함되었습니다.

이 문제는 날짜 대신 문자열을 비교하는 데서 발생합니다. date_format 함수는 날짜를 문자열로 변환하므로 사전순 정렬에 따라 비교가 가능해집니다. 예를 들어 '28-10-2012'는 '02-11-2012'보다 알파벳순으로 크므로 시간순으로 더 빠르더라도 결과 집합에 포함됩니다.

이 문제를 해결하려면 다음에서 비교를 수행해야 합니다. 문자열 대신 날짜. 날짜 함수를 사용하여 DATETIME 또는 DATE 필드에서 날짜 구성요소를 추출할 수 있습니다. 추출된 날짜를 비교하여 시간순이 보장됩니다.

예:

select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';

이 쿼리에서 date(starttime)은 starttime 필드에서 날짜를 추출한 다음 YYYY-MM의 지정된 날짜와 비교합니다. -DD ​​형식. date_format 함수는 결과 형식 지정에만 사용됩니다.

starttime이 DATETIME 필드인 경우 다음 사용을 고려하세요.

select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';

이 쿼리는 비교가 DATETIME 필드에서 직접 수행되므로 반복적인 날짜 변환을 방지합니다.

ISO를 기억하세요. -8601 표준에서는 날짜 형식으로 'YYYY-MM-DD' 사용을 권장하지만 제공된 코드는 사용자가 지정한 형식을 따릅니다. '%d-%m-%Y' 형식입니다.

릴리스 선언문 이 글은 1729739525에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3