Differenza tra Oracle DATE e TIMESTAMP


92

Qual è la differenza tra il tipo Oracle DATE e TIMESTAMP? Entrambi hanno componente data e ora? Inoltre qual è il tipo corrispondente in Java per questi tipi di data?


3
TIMESTAMPè uguale a DATE, tranne per il fatto che ha aggiunto una precisione frazionaria in secondi.
NullUserException

5
La più grande differenza: DATEè preciso al secondo e non ha frazioni di secondo. TIMESTAMPha frazioni di secondo. Il numero di cifre decimali nei secondi dipende dal sistema operativo del server, ad esempio Oracle sulla mia macchina Windows 7 restituisce tre cifre decimali per il timestamp mentre l'enorme scatola Solaris di un client ne restituisce sei. I timestamp possono anche contenere un fuso orario specifico o essere normalizzati sul fuso orario comune: vai qui e cerca "TIMESTAMP" per ulteriori informazioni, quindi sperimenta un po ':)
Ed Gibbs

Risposte:


98

DATE e TIMESTAMP hanno la stessa dimensione (7 byte). Questi byte vengono utilizzati per memorizzare secolo, decennio, anno, mese, giorno, ora, minuti 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 allora, aveva solo DATE.

In casi generali dovresti usare DATE. Ma se la precisione nel tempo è un requisito, usa TIMESTAMP.

E per quanto riguarda Java, la classe oracle.sql.DATE dal driver Oracle JDBC, fornisce conversioni tra il tipo di dati Oracle Date / Timestamp e le classi Java java.sql.Date, java.sql.Time e java.sql.Timestamp.


1
Un avvertimento: purtroppo sembra che, per impostazione predefinita, quando interroghi una colonna DATE in Oracle, ti restituisce solo il "giorno", ma se lo lanci come TO_TIMESTAMP (DATE_COLUMN_NAME) allora ti restituisce più precisione. Che in qualche modo non è l'impostazione predefinita con jdbc / hibernate, almeno non è qui.
Rogerdpack

6
"In casi generali dovresti usare DATE" - ma perché, esattamente?
siledh

4
Dovresti usare TIMESTAMP WITH TIME ZONE. Altrimenti l'ora legale introdurrà orari ambigui.
kmkaplan

15
Trovo davvero confuso, quel tipo di DATA contiene informazioni su ORA. Non è questo il significato della parola.
Daddy32

2
@ Daddy32 è TIMESTAMPstato aggiunto circa 20 anni dopo DATE. Non potevano davvero tornare indietro e cambiare DATE.
William Robertson
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.