입니다보십시오.
'날짜'값을 'mm-dd-yy'형식의 VARCHAR로 저장하는 것으로 보입니다. VARCHAR
표현식의 비교는 왼쪽에서 오른쪽으로 문자 단위로 수행됩니다. 달이 처음 인 문자 표현은 정식 순서가 아닙니다. 즉, 일종의 mm-dd-yy 값은 날짜 순서로 정렬되지 않습니다. '01 -01-13 '(2013 년 1 월)은 '11 -27-12'(11 월 2012) 이전에 정렬됩니다.
SQL 문과 관련하여 가장 간단한 방법은 VARCHAR을 DATE
데이터 유형으로 변환하고이를 DATE
을 반환하는 표현식과 비교하는 것입니다.
DELETE FROM `upcoming` WHERE STR_TO_DATE(`Date`,'%m-%d-%y') < CURDATE()
성능면에서 MySQL은이 조건자를 만족시키기 위해 인덱스 범위 검사를 수행 할 수 없습니다. 테이블의 모든 행을 검토하여 변환을 수행 한 다음 비교를 수행해야합니다. 컬럼이 DATE
으로 저장된 경우, bare 컬럼은 술어에서 참조 될 수 있고 MySQL은 인덱스 범위 스 5을 사용할 수 있습니다.
는 또한 : '%M'
형식 지정은 월 이름, '1월', '2월'등 '%m'
지정 숫자 달 '01', '02'을 리턴를 반환합니다.
mysql에 'date' 예약어가 없습니까? – Babblo
날짜가 mm-dd-yy로 지정된 경우 mm/dd/yy를 사용하는 쿼리가 왜 발생합니까? –
도움이 될 수 있습니다 : [5 일이 넘은 모든 행 삭제] (http://stackoverflow.com/questions/5853543/deleting-all-rows-older-than-5-days) – showdev