Mendapatkan entri senilai 12 jam terakhir SQLite

Saya mencoba mendapatkan entri selama 12 jam terakhir dari SQLite db dengan Android.

Saya bertanya-tanya apakah ini mungkin?

Format tanggal saya adalah "yyyy-MM-dd HH:mm:ss.SSS" menggunakan format tanggal sederhana.

Saya memiliki kolom CREATED_AT di tabel saya yang bertipe TEXT.

Saya sudah sampai sejauh ini:

SELECT * FROM " + ENTRIES_TABLE + " WHERE " + CREATED_AT + ..."

Selain itu, apakah penting kolom CREATED_AT bertipe TEXT dan bukan bertipe datetime?

Terima kasih


person Community    schedule 30.04.2014    source sumber
comment
jika string Anda cocok maka tidak masalah jika Anda melakukan = tetapi kode Anda tidak menjelaskannya dengan benar. Tapi juga bukan ide yang bagus. Apa yang terjadi jika Anda ingin melakukan less than atau between   -  person Scary Wombat    schedule 30.04.2014
comment
Anda harus mempertimbangkan penyimpanan CREATED_AT sebagai stempel waktu UNIX menggunakan sqlite INTEGER, bukan STRING. Anda akan membaca nilai dalam kode Anda menggunakan variabel panjang. Ini tidak menjawab pertanyaan Anda secara langsung, tetapi akan membantu perbandingan di masa mendatang.   -  person ugo    schedule 30.04.2014
comment
Anda juga harus mempertimbangkan untuk menerima jawaban atas pertanyaan Anda sebelumnya.   -  person ugo    schedule 30.04.2014
comment
Terkait: stackoverflow.com/a/13694823/544198   -  person PearsonArtPhoto    schedule 30.04.2014


Jawaban (2)


SQLite menggunakan pengetikan dinamis; tidak masalah jika kolom tersebut dinyatakan sebagai TEXT atau DATETIME atau FLUFFY BUNNIES.

Format tanggal SQLite dirancang agar perbandingan string berfungsi dengan benar. Untuk mengurangi 12 jam dari stempel waktu, gunakan salah satu fungsi tanggal bawaan:

SELECT *
FROM Entries
WHERE CreatedAt >= datetime('now', '-12 hours')

(Fungsi tanggal SQLite menggunakan UTC secara default; periksa apakah nilai tabel Anda tidak menggunakan zona waktu lokal.)

person CL.    schedule 30.04.2014

Sebagai bidang teks, Anda tidak dapat melakukan banyak hal. Faktanya, satu-satunya pilihan Anda yang berfungsi sepanjang waktu tanpa banyak kesulitan adalah mengurai data dan melakukannya secara manual. Rute yang menyakitkan adalah dengan melihat perbandingan string secara langsung, tetapi itu menjadi rumit jika Anda berurusan dengan, katakanlah, 1 Januari sebelum tengah hari.

Cara yang jauh lebih baik, dan cara terbaik untuk menangani tanggal di sqlite, adalah dengan menggunakan stempel waktu Unix. Maka tinggal memilih apa pun dengan label waktu lebih besar dari waktu saat ini dikurangi 12 jam, dan Anda sudah siap.

person PearsonArtPhoto    schedule 30.04.2014