programing tip

날짜 별 SQLite 주문 1530019888000

itbloger 2020. 11. 26. 07:58
반응형

날짜 별 SQLite 주문 1530019888000


내에서 모든 기록을 SQLite데이터베이스가 들어있는 필드가 들어 DateA와 저장 string형식을 'yyyy-MM-dd HH:mm:ss'.

가장 최근 날짜가 포함 된 레코드를 얻기 위해 데이터베이스를 쿼리 할 수 ​​있습니까?


당신은 이렇게 할 수 있습니다

SELECT * FROM Table ORDER BY date(dateColumn) DESC Limit 1

나를 위해 내 문제를 해결하기 위해 이런 식으로 쿼리를 받았습니다.

select *  from Table order  by datetime(datetimeColumn) DESC LIMIT 1

날짜 열이 아닌 datetime으로 저장했기 때문에


유닉스 타임 스탬프로 변환 한 다음 비교해야합니다.

SELECT * FROM data ORDER BY strftime('%s', date_column) DESC

그러나 행이 많으면 속도가 매우 느릴 수 있습니다. 더 나은 방법은 기본적으로 유닉스 타임 스탬프를 저장하고 해당 열에 대한 인덱스를 만드는 것입니다.


텍스트 필드의 형식이 yyyy-MM-dd HH:mm:ss(예 :) 인지 확인하면 2017-01-02 16:02:55간단히 작동합니다.

SELECT * FROM Table ORDER BY dateColumn DESC Limit 1

추가 날짜 기능없이!


"sent_date_time"열을 yyyy-MM-dd 형식으로 변환 한 다음 날짜별로 정렬 할 수 있습니다.

1 ) substr(sent_date_time,7,4)||"-"||substr(sent_date_time,1,2)||"-"||substr(sent_date_time,4,2) as date
2) order by date desc

내 경우에는 모든 것이 제대로 작동 하지 않고 캐스팅 '날짜'를 입력 열을. 다음 과 같이 따옴표로 열 이름을 지정하면됩니다 .

SELECT * FROM 'Repair' ORDER BY "Date" DESC;

나는 SQLite가 자체적으로 또는 이와 비슷한 것을 캐스팅한다고 생각하지만 나 혼자서 Date 열을 '캐스트'하려고하면 작동하지 않습니다. 그리고 오류 메시지도 없었습니다.


날짜 정렬 / 비교를 많이하는 경우 시간을 문자열이 아닌 틱으로 저장하여 더 나은 결과를 얻을 수 있습니다. 다음은 틱에서 '지금'을 얻는 방법을 보여줍니다.

((strftime('%s', 'now') - strftime('%S', 'now') + strftime('%f', 'now')) * 1000)

( https://stackoverflow.com/a/20478329/460084 참조 )

그러면 정렬, 비교 등이 쉽습니다.

참고 URL : https://stackoverflow.com/questions/14091183/sqlite-order-by-date1530019888000

반응형