Domanda

Sto eseguendo Oracle 10g e ho colonne con Type_Name

TIMESTAMP(6) WITH TIME ZONE

Quando gonfiati in classi Java, vengono visualizzati come

oracle.sql.TIMESTAMPTZ 

Ma DbUnit non può gestire la conversione di classi specifiche Oracle in stringhe per la scrittura in XML. Mi chiedo se c'è un modo semplice per me di convertire (diciamo, nella mia istruzione SELECT in qualche modo) da questi timestamp specifici di Oracle in qualcosa in java.sql.

È stato utile?

Soluzione

Non ho dovuto affrontare esattamente questo problema, ma presumo che farlo passare come stringa dalla query SELECT andrebbe bene.

Puoi utilizzare to_char funzione. Per convertirlo in una stringa. per esempio:

SQL> select to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;

D
----------------------------------
2008-10-21 17:00:43.501591

Questo sarebbe quindi visto dal tuo programma come una stringa. TZD include le informazioni sul fuso orario (di cui non c'è nessuno in questo esempio)

In seguito, questo potrebbe essere analizzato da Java usando Classe SimpleDateFormat .

In alternativa, oracle.sql. La classe TIMESTAMPTZ ha un metodo chiamato dateValue che restituisce una classe java.sql.Date .

Altri suggerimenti

Vorrei sottolineare che l'uso di IYYY come formato per l'anno potrebbe non essere una buona idea a meno che tu non voglia davvero ottenere l'anno ISO. Dovresti usare YYYY invece di IYYY.

Prova a eseguire il tuo SQL per il 31.12.2012 usando

select to_char(timestamp'2012-12-31 00:00:00 +00:00', 'IYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;

restituisce " 2013-12-31 00: 00: 00.000000000 " che non è l'anno che ti aspetteresti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top