Invalid data conversion

di il
7 risposte

Invalid data conversion

Buongiorno,
sono impegnato nel realizzare un servizio che preleva una serie di dati dal db.
Nella query trovo un
"CHAR(DATE(P.DATAESEMPIO),EUR) as myDate"
Nella mia classe il campo myDate è di tipo java.util.Date e quando vado a testare il servizio:
"Invalid data conversion: Parameter instance 20.11.2008 is invalid for the requested conversion to java.sql.Timestamp"
Suggerimenti su come risolvere? ci ho perso un bel po' di tempo e non ne sono uscito...

7 Risposte

  • Re: Invalid data conversion

    WinstonSmith ha scritto:


    sono impegnato nel realizzare un servizio che preleva una serie di dati dal db.
    Quale DBMS innanzitutto?

    WinstonSmith ha scritto:


    Nella mia classe il campo myDate è di tipo java.util.Date
    A parte il tuo campo, cosa stai usando per l'accesso al DB? Direttamente JDBC, cioè dal ResultSet?
  • Re: Invalid data conversion

    andbin ha scritto:



    Quale DBMS innanzitutto?

    A parte il tuo campo, cosa stai usando per l'accesso al DB? Direttamente JDBC, cioè dal ResultSet?
    DB2, un RDBMS. Sì, esattamente.
  • Re: Invalid data conversion

    Scusate,conosco pochissimo java,ma il valore TimeStamp non dovrebbe essere un valore in millisecondi?
  • Re: Invalid data conversion

    WinstonSmith ha scritto:


    DB2, un RDBMS.
    Ok

    WinstonSmith ha scritto:


    Sì, esattamente.
    Ok, tieni presente innanzitutto che il ResultSet NON tira fuori oggetti che sono esattamente dei java.util.Date ma solo i tipi temporali in java.sql. Poi è vero che queste classi Date/Time/Timestamp estendono java.util.Date.

    Comunque, c'è una cosa dubbia:

    "CHAR(DATE(P.DATAESEMPIO),EUR) as myDate"

    Cosa è quel EUR? Direi che sta cercando di "formattare" la data!! Ma a) NON serve di per sé, b) NON è comunque il formato appropriato per le classi in java.sql.

    Quindi: hai solo una data (niente orario!)? Allora innanzitutto devi usare getDate() del ResultSet, non getTimestamp().
    Poi a livello di query, non serve "formattare" in stringa. Basta che la colonna estratta sia veramente del tipo "date".

    Pertanto (pur NON conoscendo DB2) si può provare:

    ........ DATE(P.DATAESEMPIO) as myDate ...........

    e basta.
  • Re: Invalid data conversion

    WinstonSmith ha scritto:



    Ok, tieni presente innanzitutto che il ResultSet NON tira fuori oggetti che sono esattamente dei java.util.Date ma solo i tipi temporali in java.sql. Poi è vero che queste classi Date/Time/Timestamp estendono java.util.Date.

    Comunque, c'è una cosa dubbia:

    "CHAR(DATE(P.DATAESEMPIO),EUR) as myDate"

    Cosa è quel EUR? Direi che sta cercando di "formattare" la data!! Ma a) NON serve di per sé, b) NON è comunque il formato appropriato per le classi in java.sql.

    Quindi: hai solo una data (niente orario!)? Allora innanzitutto devi usare getDate() del ResultSet, non getTimestamp().
    Poi a livello di query, non serve "formattare" in stringa. Basta che la colonna estratta sia veramente del tipo "date".

    Pertanto (pur NON conoscendo DB2) si può provare:

    ........ DATE(P.DATAESEMPIO) as myDate ...........

    e basta.
    La query non è mia e non posso toccarla, non so perché va ad eseguire quelle operazioni che sembrano un po' inutili per quello che dobbiamo fare. E sì, solo data e niente orari.

    Grazie per l'indicazione!
  • Re: Invalid data conversion

    WinstonSmith ha scritto:


    La query non è mia e non posso toccarla
    Allora se dà qualcosa tipo "20.11.2008" devi estrarla dal ResultSet come String e poi "parsarla" tu lato Java.
    Non vedo altro di più sensato.

    WinstonSmith ha scritto:


    quelle operazioni che sembrano un po' inutili
    Sì pare pure a me .... (mi viene da pensare che quella colonna in uscita sia stata messa così per essere visualizzata/usata così come è come stringa ... )
  • Re: Invalid data conversion

    andbin ha scritto:



    Sì pare pure a me ....
    Ed infatti alla fine dopo mezza giornata sono stato autorizzato a modificare la query. Ricordavano di averlo già fatto.
Devi accedere o registrarti per scrivere nel forum
7 risposte