2011-11-10 3 views
2

나는 mysql 데이터베이스와 문제가있는 타임 스탬프 범위를 선택하려고하는데 왜 그런지는 알지 못한다.mysql 타임 스탬프 범위를 선택하는 것

나는 'pedido'테이블과 타임 스탬프로 설정된 'fecha'필드를 가지고 있습니다. 문제가되어서는 안되는 많은 항목이 있습니다.

그러나 Y는이 쿼리를 선택할 때 : 나는 응답을 얻을

SELECT * FROM pedido WHERE fecha BETWEEN UNIX_TIMESTAMP('2011-10-10') AND UNIX_TIMESTAMP('2011-11-10') ORDER BY fecha DESC 

. 도움 정수로

+0

아마도 테이블에 필드 유형을 게시 할 수 있습니까? – jjwdesign

+0

@jjwdesign, 필드 유형은'TIMESTAMP'입니다 – Johan

답변

6

MySQL은하지 하지 저장 날짜/시간 데이터에 대한

Thanls.
UNIX_TIMESTAP()은 1-1709 년 이래로 초를 나열하는 정수를 반환합니다.
날짜를 정수와 비교합니다. 이것은 결코 작동하지 않을 것입니다.

가 쿼리 재 작성

: 당신이 PHP에서 비교하려는 경우 그래서 사용 unix_timestamps을 수행 PHP는

SELECT * 
FROM pedido 
WHERE fecha BETWEEN '2011-10-10 00:00:00' AND '2011-11-10 23:59:59' 
ORDER BY fecha DESC 

주, 당신은 당신의 SQL 문에 unix_timestamp로 변환하거나 PHP로 변환하거나 필요 암호.

+0

당신이 그것을 말할 때 논리 종류는 –

0

열이 TIMESTAMP 유형이면 Unix 타임 스탬프가 아닌 MySQL의 기본 날짜 형식을 사용합니다. DATE(fecha)으로 전화하여시, 분, 초를 무시하고 날짜 부분 만 비교하도록하는 것이 좋습니다.

SELECT * 
FROM pedido 
WHERE DATE(fecha) BETWEEN '2011-10-10' AND '2011-11-10' 
ORDER BY fecha DESC 
+0

입니다. 이는 BETWEEN이 포함 된 것 이외에 인덱스 사용에 따른 모든 변경 사항을 없애므로 ** ** 해당 사항은 피하기를 원합니다. 'fecha'가 색인 생성되면 '2011-10-10'과 '2011-11-10 23 : 59 : 59'이 훨씬 더 빠를 것입니다. – Johan