Menghapus dari tabel sqlite Android

Saya memiliki kolom di tabel database sqlite Android. Nilai pada kolom tersebut seperti:

2011/06/01
2011/06/02
2011/06/05
2011/06/10
2011/06/11
2011/06/13
2011/06/15
2011/06/16
2011/06/25
2011/06/26

Saya punya string today="2011/06/27"

Sekarang saya ingin menghapus baris-baris yang nilai kolomnya lebih lama dari 5 hari dari hari ini.

Bagaimana cara memodifikasi kode untuk mencapai hal ini?

return db.delete(DATABASE_TABLE,where date="", null) > 0;

person Rasel    schedule 28.06.2011    source sumber
comment
Gunakan kolom tanggal di SQL Anda, bukan String   -  person Blundell    schedule 28.06.2011
comment
@Blundell itu seharusnya jawabannya, bukan komentar :)   -  person denis.solonenko    schedule 28.06.2011


Jawaban (3)


Anda harus menyimpan tanggal Anda dalam format lain, periksa fungsi tanggal SQLite. Gunakan YYYY-MM-DD bukannya YYYY/MM/DD. Anda sudah mendapatkan pesanan pada tanggal yang ditentukan oleh representasi stringnya. Jadi Anda bisa menggunakan fungsi tanggal SQLite untuk memilih baris yang benar.

Tanggal yang lebih tua dari 5 hari akan ditanyakan seperti ini.

... WHERE datecolumn < date('now', '-5 days') ...
person Flo    schedule 28.06.2011
comment
apakah kolom tanggal saya tidak dianggap sebagai tanggal - person Rasel; 28.06.2011
comment
Tambahkan pernyataan buat tabel Anda sehingga kami dapat melihat siapa yang membuat tabel Anda. - person Flo; 28.06.2011
comment
private static final String USAGE_TABLE = membuat tabel batteryUsage (peningkatan otomatis kunci utama bilangan bulat id, + tanggal tanggal bukan nol, teks waktu bukan nol, bilangan bulat level); - person Rasel; 28.06.2011

Tidak ada tipe tanggal di sqlite

Anda cukup menyimpan nilai yang diwakili data sebagai string atau int

kemudian gunakan fungsi berbasis tanggal dari sqllite untuk mendapatkan nilainya

person Tiger    schedule 15.07.2011

Anda harus menggunakan prosedur tersimpan daripada menulis layanan. Ini akan memudahkan aplikasi Anda memperbarui catatan secara otomatis.

Lihat tautan: http://searchoracle.techtarget.com/answer/Time-based-stored-procedure-to-check-table-and-update-old-records

Solusi lain adalah dengan menggunakan tanggal, bukan string. Saat Anda menjalankan layanan, ambil data sebagai Tanggal dan kemudian Anda dapat membuat perbandingan sederhana.

person Paras Mendiratta    schedule 28.06.2011
comment
SQLite tidak menyediakan prosedur tersimpan. - person Flo; 28.06.2011
comment
Namun, saya memeriksa lebih lanjut bahwa SQLite tidak menyediakan prosedur tersimpan berbasis waktu. - person Paras Mendiratta; 28.06.2011