Quali sono le differenze tra i tipi Oracle DATE e TIMESTAMP? Entrambi hanno componente di data e ora? Qual è il tipo corrispondente in Java per questi tipi di data?Differenza tra oracle DATE e TIMESTAMP
risposta
DATA e TIMESTAMP hanno la stessa dimensione (7 byte). Questi byte vengono utilizzati per memorizzare secolo, decennio, anno, mese, giorno, ora, minuto e secondi. Ma TIMESTAMP consente di memorizzare informazioni aggiuntive come secondi frazionari (11 byte) e secondi frazionari con fuso orario (13 byte).
TIMESTAMP è stato aggiunto come conforme ANSI a Oracle. Prima di ciò, aveva solo DATE.
In generale, è necessario utilizzare DATE. Ma se è necessaria precisione nel tempo, utilizzare TIMESTAMP.
E su Java, la classe oracle.sql.DATE dal driver JDBC Oracle, fornisce conversioni tra il tipo di dati Data/Timestamp Oracle e le classi Java java.sql.Date, java.sql.Time e java.sql.Timestamp .
Una parola di avvertimento: sfortunatamente sembra che, per impostazione predefinita, quando si interroga una colonna DATE in Oracle, si restituisce solo il" giorno ", ma se si esegue il cast come TO_TIMESTAMP (DATE_COLUMN_NAME) quindi restituisce maggiore precisione. Che in qualche modo non è l'impostazione predefinita con jdbc/hibernate, almeno non è qui. – rogerdpack
"In generale, dovresti usare DATE" - ma perché, esattamente? – siledh
Ciao @siledh, penso che dovresti usare TIMESTAMP solo quando le informazioni aggiuntive (fuso orario) sono importanti per la tua applicazione. Voglio dire, dipende dalla tua logica di business. Ad esempio, è necessario scegliere TIMEZONE quando è necessario condividere i dati con applicazioni distribuite su piattaforme diverse e le informazioni temporali devono essere comprese senza ambiguità tra loro. –
['TIMESTAMP'] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm#SQLRF00203) è uguale a' DATE', eccetto che ha aggiunto una precisione di secondi frazionari . – NullUserException
La più grande differenza: 'DATE' è preciso al secondo e non ha secondi frazionari. 'TIMESTAMP' ha secondi frazionari. Il numero di posizioni decimali nei secondi dipende dal sistema operativo del server, ad esempio Oracle sul mio computer Windows 7 restituisce tre cifre decimali per il timestamp mentre l'enorme scatola Solaris di un client restituisce sei. I timestamp possono anche contenere un fuso orario specifico o essere normalizzati al fuso orario comune - vai [qui] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm) e quindi cerca " TIMESTAMP "per ulteriori informazioni, quindi prova un po ':) –