2012-10-31 2 views
1

"01.01.2012"형식의 날짜가 포함 된 문자열 필드가있는 SQLite DB가 있습니다. 내가 원하는 것은이 문자열 형식의 날짜를 쿼리에서 정렬하는 것입니다. 내가 잘못 뭐하는 거지SQLITE DB 문자열 형식의 날짜 필드 별 쿼리 정렬

SELECT * FROM fahrer, fahrzeuge, nutzungsarten, fahrtenbuch WHERE fahrtenbuch.nutzungsart_id = nutzungsarten._id AND fahrtenbuch.fahrzeuge_id = fahrzeuge._id AND fahrtenbuch.fahrer_id = fahrer._id ORDER BY strftime ('%d.%m.%Y', fahrtenbuch.startdatum) 

: 나는 성공없이 시도?

+0

무엇을 얻었습니까? 오류? 날짜가 틀렸어? –

+0

오류가 없습니다. 지정된 Order가 정렬되지 않았습니다. 엔트리의 ID로 orted됩니다. – venni

+0

ASC를 사용하여 날짜를 정렬하십시오. SELECT * FROM table ORDER BY 날짜 ASC –

답변

2

startdatum 열의 값은 SQLite에서 인식 할 수있는 형식이 아니므로 strftime에 대한 매개 변수로 사용할 수 없습니다. (작동하더라도 날짜 형식이 연도의 가장 중요한 필드로 시작하지 않기 때문에 결과가 올바르게 정렬되지 않습니다.)

정렬이 동일하도록 날짜 필드의 추출을 시도 할 수 있습니다 yyyy-mm-dd 순서 :

SELECT ... 
ORDER BY substr(startdatum, 7, 4), 
     substr(startdatum, 4, 2), 
     substr(startdatum, 1, 2) 

하지만 처음에 a supported format로 값을 변환하는 것이 좋습니다.

+0

CL .: 절대 생명의 은인. substr() ist는 잘 동작합니다. 그럼에도 불구하고 지원되는 형식을 살펴 보겠습니다. 고마워요! – venni

+0

내 질문에도이 작업을 수행해야합니까? http://stackoverflow.com/questions/40129782/why-is-the-order-by-not-working-in-a-sqlite-query 감사합니다. – Si8

관련 문제