Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Gestire date con sqlite

    Salve a tutti,
    sto sviluppando un piccolo applicativo in java per la gestione di una vettura sostitutiva, come database pensavo di usare sqlite che insieme a java mi permetterebbe la massima portabilità...

    sto incontrando un problema però... la gestione delle date.....

    da una jtextfield ricavo la data, la trasformo da stringa a java.sql.Date e con un prepared Statement la metto nel db, la query va in porto senza alcun problema, ma quando vado a leggere la data mi trovo una serie di numeri...
    ho cercato in giro pere la rete e ho visto che molti utilizzano il campo text al posto di date... se al mio db passo una stringa con la data riesco a leggerela nel modo corretto, pero questo mi comporterebbe che non potrei fare alcuna query direttamente sulle date visto che sono stringe...

    come posso memorizzare la data nel formato date in sqlite?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    SQLite non ha un tipo "Date" nel senso stretto del termine, quindi bisogna gestire le date con altri tipi, tra cui "TEXT". Potresti prendere il valore della tua jtextfield e memorizzarla direttamente nel DBMS senza passare per il cast a Date. Magari utilizzando anche la funzione format() di String e quindi formattandola come ti pare.

    P.S.: se formatti la data come scritto nella documentazioni di SQLite, anche essendo stringhe puoi fare sulle date tutte le operazioni che vuoi.

  3. #3
    grazie per la risposta,
    tutte le operazioni che voglio?
    posso anche comparare 2 date per vedere qual'è la piu grande? semplicemente da sql con where data > data2? come se fossero vere date?

  4. #4
    La cosa più sensata è memorizzarle come un intero (timestamp), in modo da poter fare confronti/limiti in maniera semplice; vedi comunque qui per altre opzioni.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    ma bisogna per forza usare YYYY-MM-DD HH:MM:SSS.SS ??
    io ho fatto delle prove in sqlite con YYYY-MM-DD ma non vedo risultati, sia se imposto il campo come DATE che come TEXT....

    nella query di inserimento le date le devo passare come stringre (tra i doppi apici) oppure come numeri?

    se le inserisco come numeri es
    codice:
    insert into tabella values (2013-01-01)
    se poi faccio la query di verifica mi ritorna 2011

    se lo inserisco tra doppi apici come una stringa mi ritorna giusto, pero se poi faccio faccio una query del tipo
    codice:
    select * from tabella where data < "2013-01-10"
    non ottengo nessun risultato...

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    Non devi usare necessariamente YYYY-MM-DD HH:MM:SSS.SS, qui trovi la lista delle formattazioni che puoi usare.
    Se decidi di fare tutto mediante stringhe allora definisci il campo del DB come TEXT e poi in Java devi usare String. Altrimenti (scelta che condivido e come ti è stato consigliato da
    MItaly) definisci il campo del DB come NUMERIC e in Java utilizzi il tipo Long e la funzione System.currentTimeMillis().

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.