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

Mary-Kate Olsen
풀어 주다: 2024-10-24 11:15:29
원래의
627명이 탐색했습니다.

Why Is MySQL Date Comparison with date_format Yielding Unexpected Results?

MySQL 날짜를 date_format과 비교

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

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

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

예:

<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';</code>
로그인 후 복사

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

starttime이 DATETIME 필드인 경우 다음을 사용하는 것이 좋습니다.

<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';</code>
로그인 후 복사

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

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

위 내용은 date_format을 사용한 MySQL 날짜 비교가 예상치 못한 결과를 낳는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!