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

    come creare date e memorizzarle date su database

    Salve a tutti,
    sto sbattendo la testa su un problema apparenetemente semplice, ma che mi sta creando qualche grattacapo.
    Io ho un db con una campo in formato data (premetto che non voglio usare il campo varchar per memorizzare date).

    Voglio creare una data in Java e memorizzarla su DB nel formato dd/mm/yy.
    Con questo pezzo di codice io creo una stringa formattata nel modo che ho indicato.

    codice:
    Date d1 = new Date(1000000000000L);
    System.out.println("d1 = " + d1.toString());
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
    String s = df.format(d1);
    System.out.println(s);
    Ma se voglio creare un oggetto java.sql.Date da inserire nel db, come devo fare?
    Non ci sono Queen senza Freddie !

  2. #2
    Non sei tu che decidi il formato di un oggetto di tipo Date salvato sul DB. Devi semplicemente creare un oggetto di tipo sql.Date memorizzarlo sul DB. E' come per Java, un oggetto Date non ha un formato specifico il quale dipende esclusivamente dal pattern utilizzato per visualizzarlo.
    Quindi, salvi il tuo oggetto Date sul DB ed al momento di effettuare le select decidi il formato di visualizzazione oppure lo converti successivamente lato Java utilizzando il SimpleDateFormat.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ok, da quanto ho capito quindi conviene gestire le date come stringhe lato Java, per esempio come ho mostrato nel codice precedente, e poi fare la conversione:

    TO_DATE(<stringa>, <formato>) per scrivere la data su DB
    Non ci sono Queen senza Freddie !

  4. #4
    Io farei le conversioni in fase di lettura del DB. Inserirei le date nel DB in formato Date e quando vado a recuperarle con una select farei la conversione nel formato che mi interessa.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: come creare date e memorizzarle date su database

    Originariamente inviato da music_ale
    Ma se voglio creare un oggetto java.sql.Date da inserire nel db, come devo fare?
    Hai due modi per farlo:

    1) Conoscere la sintassi usata dal tuo DB per le date e sfruttarla in un oggetto Statement (se poi decidi di cambiare database, dovrai rimettere mano alle SQL crud che hai scritto)

    2) Avvalerti delle PreparedStatement, che risolvono il problema per te.

    Caso 1: supponiamo di avere a che fare con un DB MySQL che accetta le date nel formato "yyyy-MM-dd".

    codice:
    java.util.Date d = new java.util.Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Statement stmt = con.createStatement();
    int numRec = stmt.executeUpdate("INSERT INTO ... VALUES(" + sdf.format(d) + ");");
    Caso 2: non mi interessa più sapere che DB c'è sotto.
    codice:
    java.sql.Date d = new java.sql.Date( new java.util.Date().getTime() );
    String sql = "INSERT INTO ... VALUES(?);";
    PreparedStatement pstmt = con.prepareStatement( sql );
    pstmt.setDate(1, d);
    int numRec = pstmt.executeUpdate();
    Come ha già detto satifal, il "formato" di una data è solo un modo per visualizzarla all'utente, che dipende solo dall'abitudine dell'utente, dal suo Paese di origine, dallo spazio che si ha a video, ecc... non ha nulla a che vedere con il dato in se. Una data altro non è che un istante nel tempo.

    Oggi è il 30 di novembre del 2010.
    Se io oggi creo un oggetto Date in questo modo:

    codice:
    Date d = new Date();
    Esso mi rappresenterà la data di oggi. E questo oggetto io lo posso visualizzare in infiniti modi diversi:

    codice:
    30/11/2010
    30/11/10
    30 Nov 2010
    30 Novembre 2010
    2010-11-30
    10-11-30
    Martedì 30 novembre 2010
    ...
    Ma è sempre e solo lo stesso oggetto "d" creato prima. Il modo di visualizzarlo (il formato) dipende sempre e solo da quello che io voglio far vedere all'utente ed è indipendente dal dato stesso.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.