php - MYSQL 연도의 중단 날짜 중에서 선택

출처 php mysql date select

사용자가 제출하는 간단한 양식을 만들었습니다. 모든 것이 잘 작동하지만 최근에

SELECT * FROM `Forms` WHERE `Date` BETWEEN '{$startDate}' AND '{$endDate}' 


Date 열은 TEXT 유형입니다. 모든 것을 MM/DD/YY 형식으로 표시하는 것이 더 쉬울 것이라고 생각했기 때문에 텍스트가 필요했습니다. 이제 양식이 잘 작동하기 때문에 데이터 유형을 변경할 위험이 없습니다.

날짜 열의 예

01-03-2013
01-04-2013
07-25-2012
08-01-2012
08-01-2012
08-01-2012
08-01-2012


작업 쿼리의 예

SELECT * FROM `Forms` Where `Date` Between '01-08-2012' and '12-12-2012'


작동하지 않는 쿼리의 예

SELECT * FROM `Forms` Where `Date` Between '01-08-2012' and '01-04-2013'


연도가 바뀌면 깨지는 이유는 무엇입니까? 연도가 바뀌더라도 어떻게 작동시킬 수 있습니까?
당신은 그렇게 할 수 있습니다

SELECT * FROM `Forms` 
WHERE str_to_date(`Date`, '%d-%m-%Y') BETWEEN '2012-01-30' AND '2013-09-29'


DEMO HERE

편집하다 :

여기 테이블을 수정하려면 어떻게해야하나요?


적절한 DATE 데이터 유형의 새 열을 추가합니다.

ALTER TABLE `Forms` ADD `new_date` DATE AFTER `Date`;

MySQL의 STR_TO_DATE() 함수를 사용하여 새 열을 이전 열에 보관 된 날짜로 채 웁니다.

UPDATE `Forms` SET `new_date` = STR_TO_DATE(`Date`, '%d-%m-%Y');

이전 열을 삭제하고 원하는 경우 새 열의 이름을 바꿉니다.

ALTER TABLE `Forms` DROP `Date`, CHANGE `new_date` `Date` DATE;

이 새 열을 사용하도록 애플리케이션을 변경하십시오.
관련 기사

php - PHP를 통해 wait_timeout 및 max_allowed_packet을 변경하는 방법이 있습니까? [복제]

php - .csv 파일을 생성 할 수 없습니다 : PHP

php - PHP를 통해 프로세스에 신호 보내기

php - 컬 페이지 제목

php - Zend Framework 2-주석 양식이 작동하지 않습니다.

php - 인수에서 문자열 연결 (PHP)

php - 작동하지 않는 연관 배열에서 키 제거

php - $ _POST 수퍼 글로벌에서 PHP가 어레이를 생성하지 못하도록 중지

php - Sublime Text 2가있는 Xdebug

php - PHP에서 특정 문자열을 시간으로 변환