2012-06-07 2 views
1

varchar (255) 유형 인 테이블 desc (형식 mm/dd/yyyy)에서 레코드를 정렬하려고합니다. 날짜MySQL의 쿼리가 작동하지 않습니다 - 날짜순 정렬

SELECT *, DATE_FORMAT(date,'%m/%d/%Y') AS reldate FROM table ORDER BY reldate DESC 

에 의해

순서는이 working.For 날짜 = 2009년 3월 28일, MySQL은 초보자가 정말 해결하는 방법을 알고하지 않도록 NULL.I'm로 reldate 반환하지 않습니다 이.

감사합니다.

+0

reldate가 datetime이 아닌 varchar 유형 인 이유가 있습니까? –

답변

1

(내가 질문을 오해 할 수있다. 된 날짜 열을 날짜 또는 VARCHAR를? 내 대답은 그것이 내가 이해 것입니다 VARCHAR,의 가정을 기반으로합니다.)

난 당신이 기능을 것 같아요 이후는 DATE_FORMAT이 아닌 STR_TO_DATE입니다. DATE_FORMAT은 (는) 실제로 원하는 것과 반대입니다. 그것은 문자열에서 날짜로 이동하는 반면 문자열에서 날짜로 이동하려고합니다.

더 큰 질문은 왜이 데이터가 처음에 VARCHAR 열에있는 것입니까?

+0

어느 쪽이든 OP가 날짜로 변환 한 다음 형식 lol의 문자열로 다시 변환해야합니다. –

+0

이미 날짜가있는 경우 ORDER BY를 사용하면 전환이 필요하지 않고 올바르게 작동하지 않을까요? – Shoaib

+0

나는 그것이 데이트라고 말하지 않았다. –

0

해당 기능에서 사용하려면 먼저 datedatetime 유형으로 변환해야 할 수 있습니다. 시도 : 내가 그랬던 것처럼 나는 가능한 모든 예약어 충돌을 피하기 위해 쿼리에 date 필드 주위에, 역 따옴표를 넣어 것

SELECT *, DATE_FORMAT(CAST(`date` AS DATETIME),'%m/%d/%Y') AS reldate 
FROM table ORDER BY reldate DESC 

.
다른 사람이 언급했듯이이 필드는 먼저 datetime 열 형식이어야합니다.