DATETIME 열의 DATE 부분이 특정 리터럴과 일치하는 모든 행을 선택하려면 다음과 같이 할 수 없습니다.
WHERE startTime = '2010-04-29'
MySQL은 DATE와 DATETIME을 직접 비교할 수 없기 때문입니다. MySQL이하는 일은 주어진 DATE 리터럴을 시간 '00 : 00 : 00 '으로 확장합니다. 그래서 당신의 상태는
WHERE startTime = '2010-04-29 00:00:00'
확실히 당신이 원하는 것이 아닙니다!
조건은 범위이므로 범위로 지정해야합니다. 몇 가지 가능성이 있습니다.
WHERE startTime BETWEEN '2010-04-29 00:00:00' AND '2010-04-29 23:59:59'
WHERE startTime >= '2010-04-29' AND startTime < ('2010-04-29' + INTERVAL 1 DAY)
DATETIME 열이 1 초 미만의 해상도를 사용하고 23:59:59 + 엡실론에 약속이있는 경우 첫 번째 오류가 발생할 가능성이 거의 없습니다. 일반적으로 두 번째 변형을 사용하는 것이 좋습니다.
두 변형 모두 테이블이 커질 때 중요 해지는 startTime의 인덱스를 사용할 수 있습니다.