Autore Topic: Database, query con confronto date  (Letto 602 volte)

Offline neo

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Database, query con confronto date
« il: 03 Maggio 2012, 00:28:42 CEST »
0
Salve a tutti,
sto perdendo letteralmente la testa: in pratica devo prelevare dal db solo quei record che hanno come mese nella data quello del mese corrente.
Ho un campo nella tabella che è Data INTEGER, dove ci salvo quello che mi ritorna la funzione d.getTime() (d è un oggetto di tipo Date() ).
Il codice che ho prodotto cercando di rovistare in un pò tutto google è questo
Codice (Java): [Seleziona]
public Cursor pincoPallino(SQLiteDatabase db){
        GregorianCalendar gc = new GregorianCalendar();
        int questo_mese=gc.get(Calendar.MONTH);
        Log.d("Vado ad eseguire query getSpeseMese"," ");
        String query="SELECT *"
                           +"FROM spese "
                           +"WHERE strftime('%m',Data) = "+String.valueOf(questo_mese)+";";
       
        Cursor cc = db.rawQuery(query, null);
       
        return cc;
    }

Qualcuno potrebbe illuminarmi per favore su dove sbaglio? Magari indicandomi eventualmente anche qualche altro metodo da poter usare per eseguire una query come quella che a me servirebbe.
Grazie!!!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Database, query con confronto date
« Risposta #1 il: 03 Maggio 2012, 08:04:05 CEST »
0
Il formato con cui viene memorizzata la data è un LONG, l'unità di misura è il millisecondo. Per cui per trovare tutti i recordo appartenenti ad esempio a APRILE devi cercare tutti i record con data compresa tra "1 aprile 2012 00:00:00.000" e "30 aprile 2012 23:59:59.999", ovviamente confrontando i relativi getTime.

Se invece devi cercare tutti i record di aprile di qualsiasi anno, temo che l'opzione migliore sia spacchettare i campi della data nel database stesso.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline neo

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:Database, query con confronto date
« Risposta #2 il: 19 Maggio 2012, 20:37:02 CEST »
0
Ho risolto, ho dovuto modificare la query in questo modo:

Codice (Java): [Seleziona]
String query="SELECT *"
                    +"FROM spese "
                    +"WHERE strftime('%m',Data,'unixepoch') = '"+mesee+"'"
                    +"ORDER BY Data DESC";
Badando però a salvare la data come data.getTime()/1000, dato che strftime(....,'unixepoch') la gestisce come secondi e non come millisecondi dal 1970.