2013-06-17 2 views
0

수년간 일하는 일상적인 작업으로 실행되는 쿼리가 있습니다. 여하튼, 그것은 어제 멈췄다.간단한 MySQL 타임 스탬프 쿼리가 실패합니다.

내가 적절한 값과 쿼리가있는 timestamp 필드가 ...

SELECT * 
FROM `shoppingcart` 
WHERE `creation_datetime` like '2013-06-16' 

는 내가 다시 빈 결과 집합을 얻을. 날짜 이후에 %을 추가하면 작동합니다.

MySQL이 5.1.61이고 서버에서 아무것도 업데이트되지 않았습니다.

답변

5

당신은 단지 datetime 열의 date 부분을 원하는 경우에 당신은 그것을

SELECT * 
FROM shoppingcart 
WHERE date(creation_datetime) = '2013-06-16' 

추출 DATE()를 사용할 수 있지만 @eggyal가 언급 한 바와 같이이 인덱스를 사용하지 않습니다. 당신이 더

SELECT * 
FROM shoppingcart 
WHERE creation_datetime >= '2013-06-16' 
AND creation_datetime < '2013-06-17' 
3

datetime 유형은 날짜와 시간을 사용해야하는 이유입니다. 항상. 시간 부분을 생략하면 모든 0을 사용하는 것과 동일하므로 시간이 정확히 자정 인 레코드 만 일치시킵니다. 따라서 언제든지 수락하기 때문에 %이 작동합니다. 날짜의

예 : = 같은 YYYY-MM-DD HH:MM:SS

+0

니스 부록, 조엘를 사용하십시오. –

1

당신이 LIKE를 사용하는 경우, 당신은 % 표시를 사용할 수 있고, 그렇지 않으면 LIKE 역할을합니다.

LIKE '2013-06-16%' 

그렇지 않으면 당신은 단순히 DATE 함수를

DATE(creation_datetime) = '2013-06-16' 
+0

그것은 과거에도 항상 효과가 있었지만 이상한 점은 무엇입니까? 마찬가지로, 년 동안 ... – andyknas

+0

'creation_datetime'에 대해 저장된 일부 값을 게시 할 수 있습니까 –

+0

2013-06-16 02:40:10 2013-06-16 04:19:22 2013-06-16 06 : 20:40 – andyknas