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

    [Java vs MySQL] errore inserimento ora nel database.

    Salve a tutti,
    volevo chiedervi un aiuto.

    inserisco in un campo del DB formato DATETIME la data rilevata da sistema ogni minuto tramite le seguenti istruzioni :

    Format formatter = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    Date data = new Date();
    Statement st = con.createStatement();
    st.executeUpdate("insert into prova values ('"+formatter.format(data)+"');");

    tutto funziona, ma superate le 2018-03-13 23:59:59 la query va in errore inserendo 0000-00-00 00:00:00 fino alle 2018-03-14 01:00:00 poi continua correttamente.
    in poche parole va in errore sempre e solo dalla mezzanotte all'una del giorno successivo.

    come mai ?
    spero che mi sono spiegato bene.

    ciao

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fcorsa Visualizza il messaggio
    Format formatter = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    Perché kk? Questa è l'ora 1-24. Mentre invece va messo HH (0-23)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prova a far inserire il tipo Data direttamente al driver senza fare tu conversioni in stringhe:

    codice:
    PreparedStatement pstmt = null;
    try {
       java.sql.Date data = new java.sql.Date( System.currentTimeMillis() );
       pstmt = con.prepareStatement("INSERT INTO prova VALUES( ? )");
       pstmt.setDate(1, data);
    
       pstmt.executeUpdate();
    } catch (Exception e) {
       e.printStackTrace();
    } finally {
       if (pstmt != null) {
          try { pstmt.close(); } catch (Exception e) { }
       }
    }
    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

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Se serve solo per la data/ora corrente, allora si possono evitare parametri, basta il now() di MySQL.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Perché kk? Questa è l'ora 1-24. Mentre invece va messo HH (0-23)
    Ciao andbin,
    hai ragione ho usato il formato sbagliato.
    però kk si ferma alle 23:59:00 non dovrebbe fermarsi alle 24:59:00 ? fa un ora in meno ?

    ciao e grazie come sempre

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se serve solo per la data/ora corrente, allora si possono evitare parametri, basta il now() di MySQL.
    Sì, concordo... ma vale solo per MySQL. La mia era più che altro per fargli notare che non conviene fare conversioni "azzardate" dei tipi in stringa (ed, inoltre, è cross-dbms )
    "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

  7. #7
    quindi se uso :

    insert into prova values (now());

    mi evito tutto il casino della formattazione ?
    grazie

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    -doppio post per errore, scusate
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da fcorsa Visualizza il messaggio
    quindi se uso :

    insert into prova values (now());

    mi evito tutto il casino della formattazione ?
    Eh sì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  10. #10
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Eh sì.

    ok Grazie andbin e LeleFT.

    grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.