CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 12
Discussione:

SQLite, clausola WHERE e date

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Oct 2009
    Messaggi
    97

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    SQLite, clausola WHERE e date

    Qualcuno di voi sa come fare una query, tramite cursor, con la clausola where (cioè in una stringa che va nel campo selection) data (colonna contenente date di calendario) = (o maggiore o minore o compresa tra altre) 26/04/2010?

    Perchè io ho provato con queste stringhe:

    -selezione = ClassToolEventiCalendari.START_DATE + " > 26-04-2010 AND " + ClassToolEventiCalendari.START_DATE + " < 27-04-2010 ";
    -selezione = ClassToolEventiCalendari.START_DATE + " > '26-04-2010' AND " + ClassToolEventiCalendari.START_DATE + " < '27-04-2010' ";
    -selezione = ClassToolEventiCalendari.START_DATE + " BETWEEN 26-04-2010 AND 27-04-2010 ";
    -selezione = ClassToolEventiCalendari.START_DATE + " BETWEEN '26-04-2010' AND '27-04-2010' ";
    -selezione = ClassToolEventiCalendari.START_DATE + " = 26-04-2010 ";
    -selezione = ClassToolEventiCalendari.START_DATE + " = '26-04-2010' ";
    -come sopra ma nel formato yyyy-mm-dd
    -come sopra ma con / al posto di -

    Usando questa istruzione:

    cursor c=getContentResolver().query(uri, proiezione, selezione, null, ClassToolEventiCalendari.START_DATE);

    Se non uso la selezione e lascio null, o comunque non metto nessun campo dateyime, mi ritorna quello che mi deve ritornare.
    Nella tabella ci sono 2 tuple con data 26/04/2010 a due orari diversi.
    Ho provato a creare un mini db (esterno ad android), con una tabella con 2 campi: id e data, ho riempito due righe e ho eseguito questa funzione con il tool sql3:
    select * from prova where data = '26/04/2010';
    e non mi ha mostrato nulla, poi ho provato:
    select * from prova where data > '26/04/2010' and data < '27/04/2010';
    e
    select * from prova where data between '26/04/2010' and '27/04/2010';
    e tutti e due mi han dato il risultato che volevo ma su android no.

  2.  
  3. #2
    Androidiano


    Registrato dal
    Oct 2009
    Messaggi
    97

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho trovato il problema: avevo bisogno di dormire!
    I dati salvati sul db non sono nel formato date, ma in formato long...

  4. #3
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    LOL :P E' proprio il caso di dire che "Chi non dorme non piglia pesci"

    Twitter @veke87

  5. #4
    Androidiano


    Registrato dal
    Oct 2009
    Messaggi
    97

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito



    Che vergogna però.

  6. #5
    Baby Droid


    Registrato dal
    Jun 2010
    Messaggi
    17

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da Deadly Visualizza il messaggio


    Che vergogna però.
    Io è 2 giorni che sto cercando di capire come mettere in un db un campo di tipo data, voi avete qualche consiglio su come fare nella maniera più pulita/semplice possibile???

    Grazie

  7. #6
    Androidiano


    Registrato dal
    Oct 2009
    Messaggi
    97

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Prova a vedere questo tutorial:

    anddev.org &bull; View topic - Working with the SQLite-Database - Cursors

    e' semplice da capire anche se non sai l'inglese.

  8. #7
    Baby Droid


    Registrato dal
    Jun 2010
    Messaggi
    17

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da Deadly Visualizza il messaggio
    Prova a vedere questo tutorial:

    anddev.org &bull; View topic - Working with the SQLite-Database - Cursors

    e' semplice da capire anche se non sai l'inglese.
    Grazie del tutorial, su tipi di dato come text integer real ecc non ho problemi, il mio problema è gestire dati del tipo DATE (yyyy/DD/mm).
    Ho creato un db che gestiva delle note diciamo e adesso volevo implementare un sistema che mi permetta di mettere un campo data a queste note cosi che poi potessi gestirle con le query.
    ti linko un pò di codice che cosi mi spiego meglio:

    .
    .
    .
    initialValues.put(KEY_DATA, data); //dove data è una stringa formattata
    (yyyy/DD/mm)
    return mDb.insert(DATABASE_TABLE, null, initialValues);

    ecco la insert ritorna sempre -1 quindi errore e non capisco il perchè

    grazie comunque dell'aiuto che mi hai dato!

  9. #8
    Androidiano


    Registrato dal
    Oct 2009
    Messaggi
    97

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Hai provato ad inserire la data nel formato MM/DD/YYYY o YYYY-MM-DD o YYYY/MM/DD?
    Ultima modifica di Deadly; 03-11-10 alle 23:48

  10. #9
    Baby Droid


    Registrato dal
    Jun 2010
    Messaggi
    17

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da Deadly Visualizza il messaggio
    Hai provato ad inserire la data nel formato MM/DD/YYYY o YYYY-MM-DD o YYYY/MM/DD?
    mmm quello no, domani provo di sicuro.
    Grazie dell'idea

  11. #10
    Androidiano


    Registrato dal
    Mar 2011
    Messaggi
    107

    Ringraziamenti
    8
    Ringraziato 14 volte in 11 Posts
    Predefinito

    volevo chiedere se è possibile utilizzare il formato dd-mm-yyyy per fare dei paragoni fra date.
    Più precisamente nel mio db o dichiarato le colonne di una tabella ("data_inizio" DATE,"data_fine" DATE) e dovrei fare una select di quelle tuple che nel giorno attuale sono valide o no.

    Il formato che ho usate per le date è dd-mm-yyyy.
    La query che ho fatto è una

    string data_corrente="26-03-2012"

    SELECT *
    FROM TABELLA T
    WHERE data_corrente BETWEEN T.data_inizo AND T.data_fine

    ma non funziona.

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy