2012-06-11 3 views
-1

나는 MySQL의mySQL 쿼리에서 날짜 평등을 어떻게 선택합니까?

SELECT * from TABLENAME WHERE FROM_DATE='06/11/2012' 

나는 아무것도 유용을 받고 있지 않다에서 기록의 특정 날짜 주어진 테이블에서 행을 선택합니다.

+2

... 그리고 질문은 무엇입니까? 당신 문제는 무엇입니까? – Marco

+0

SELECT ... WHERE FROM_DATE> = '...'가 요청한 것일 수 있지만 질문이 매우 명확하지 않습니다 ... – Argeman

+0

'FROM_DATE'는 varchar 또는 날짜 필드입니까? – MrCode

답변

3

우선, 표준 날짜 형식 Y-m-d을 사용해야합니다. 그렇지 않으면 불쾌한 쿼리를 만들어야하며 정렬은 실제 b * tch입니다. 당신은 쉽게 이런 식으로 뭔가를 할 수있는 표준 날짜 형식을 사용

:

SELECT * FROM tablename WHERE from_date > '2012-06-11'

0

당신은 MySQL의의 DATE() 기능을 사용하는 경우 그것은 더 나은 것

SELECT * FROM tablename WHERE DATE(from_date) > '2012-06-11' 

, 때문에 데이터 유형의 경우 TIMESTAMP 또는 DATETIME으로 설정 한 from_date 중 '>'기호를 직접 사용하면 올바른 결과를 반환하지 않습니다.

+0

True'date()'는 모든 시간 값을 자릅니다. 그러나 데이터베이스가 해당 열의 색인을 사용하지 못하게 할 수도 있습니다. 그것은 인덱스 친화적 인 것이므로 호텔의 솔루션이 바람직합니다. – Leigh

2

DATE 비교가 원하는 결과 일 가능성이 큽니다. 당신의 FROM_DATE 열이 DATE의 데이터 유형이있는 경우, 다음 코드는이 작업을 수행 할 경우 안전하고 견고해야합니다 @Repox 당신이 '정식 형식으로 날짜 리터럴을 가하고 고려할 수 있다고 지적

WHERE from_date = STR_TO_DATE('06/11/2012', '%m/%d/%Y') 

2012- 06-11 '. 네가 할 수 있다면 그건 사실이야. 그러나 필요한 경우 STR_TO_DATE에서 처리합니다. 여기에 % x 변환 항목 목록이 있습니다. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

DATETIME 데이터 유형을 사용하는 경우 : 비교가 보이는 것보다 더 복잡합니다. DATETIME 항목은 부동 소수점 숫자와 같습니다. 그 중 하나가 정확히 다른 항목과 일치하면 우연히 만 항목입니다. 그 이유는 단지 며칠이 아닌 시간적으로 순간 (밀리 초)을 나타 내기 때문입니다.

당신의 FROM_DATE 열이 DATETIME 유형이 가정하면, 당신은하지만, 다음 날의 첫 순간을 포함하지 않는까지이 원하는 일에 시간의 모든 순간을 잡을 것

WHERE from_date >= STR_TO_DATE('06/11/2012', '%m/%d/%Y') 
    AND from_date < STR_TO_DATE('06/11/2012', '%m/%d/%Y') + INTERVAL 1 DAY 

를 사용해야합니다.

from_date 항목이 문자열로 표시되는 경우 데이터 유형을 DATE 또는 DATETIME 개로 변환하는 데 문제가 있습니다. 진지하게. 결과는 훨씬 나아질 것입니다.

1
SELECT * from TABLENAME WHERE FROM_DATE='2012/06/13' 
관련 문제