Unterschied zwischen Orakeldatum und Zeitstempel

88

Was ist der Unterschied zwischen Oracle DATE und TIMESTAMP? Beide haben Datums- und Zeitkomponente? Was ist der entsprechende Typ in Java für diese Datumstypen?

Supernova
quelle
3
TIMESTAMPist das gleiche wie DATE, außer dass es eine Genauigkeit von Sekundenbruchteilen hinzugefügt hat.
NullUserException
5
Der größte Unterschied: DATEist sekundengenau und hat keine Sekundenbruchteile. TIMESTAMPhat gebrochene Sekunden. Die Anzahl der Dezimalstellen in Sekunden hängt vom Betriebssystem des Servers ab. Beispielsweise gibt Oracle auf meinem Windows 7-Computer drei Dezimalstellen für den Zeitstempel zurück, während die riesige Solaris-Box eines Clients sechs zurückgibt. Zeitstempel können auch eine bestimmte Zeitzone enthalten oder auf die gemeinsame Zeitzone normalisiert werden. Gehen Sie hier und suchen Sie nach "TIMESTAMP", um weitere Informationen zu erhalten. Experimentieren Sie dann ein wenig :)
Ed Gibbs

Antworten:

97

DATE und TIMESTAMP haben die gleiche Größe (7 Bytes). Diese Bytes werden zum Speichern von Jahrhundert, Jahrzehnt, Jahr, Monat, Tag, Stunde, Minute und Sekunden verwendet. Mit TIMESTAMP können jedoch zusätzliche Informationen wie Bruchsekunden (11 Byte) und Bruchsekunden mit Zeitzone (13 Byte) gespeichert werden.

TIMESTAMP wurde als ANSI-kompatibler Oracle hinzugefügt. Vorher hatte es nur DATUM.

Im Allgemeinen sollten Sie DATE verwenden. Wenn jedoch Zeitgenauigkeit erforderlich ist, verwenden Sie TIMESTAMP.

In Bezug auf Java bietet die Klasse oracle.sql.DATE aus dem Oracle JDBC-Treiber Konvertierungen zwischen dem Datentyp Oracle Date / Timestamp und den Java-Klassen java.sql.Date, java.sql.Time und java.sql.Timestamp.

Guillermo Luque
quelle
1
Ein Wort der Warnung: Leider scheint es, dass wenn Sie eine DATE-Spalte in Oracle abfragen, standardmäßig nur der "Tag" zurückgegeben wird. Wenn Sie sie jedoch wie TO_TIMESTAMP (DATE_COLUMN_NAME) umwandeln, erhalten Sie mehr Genauigkeit. Was bei jdbc / hibernate irgendwie nicht die Standardeinstellung ist, zumindest ist es nicht hier.
Rogerdpack
6
"Im Allgemeinen sollten Sie DATE verwenden" - aber warum genau?
Siledh
4
Sie sollten verwenden TIMESTAMP WITH TIME ZONE. Andernfalls führt die Sommerzeit zu mehrdeutigen Zeiten.
kmkaplan
13
Ich finde es sehr verwirrend, dass der DATE-Typ TIME-Informationen enthält. Das bedeutet das Wort nicht.
Daddy32
2
@ Daddy32 TIMESTAMPwurde ungefähr 20 Jahre später hinzugefügt DATE. Sie konnten nicht wirklich zurückgehen und sich umziehen DATE.
William Robertson