Apa perbedaan antara tipe Oracle DATE dan TIMESTAMP? Keduanya memiliki komponen tanggal dan waktu? Juga apa tipe yang sesuai di Jawa untuk tipe tanggal ini?
TIMESTAMPsama dengan DATE, kecuali ia menambahkan presisi pecahan detik.
NullUserException
5
Perbedaan terbesar: DATEakurat hingga detik dan tidak memiliki detik pecahan. TIMESTAMPmemiliki detik pecahan. Jumlah tempat desimal dalam detik tergantung pada OS server, misalnya Oracle pada mesin Windows 7 saya mengembalikan tiga tempat desimal untuk stempel waktu sedangkan kotak Solaris klien yang besar mengembalikan enam. Stempel waktu juga dapat berada di zona waktu tertentu atau dinormalisasi ke zona waktu umum - buka di sini lalu cari "TIMESTAMP" untuk informasi lebih lanjut, lalu bereksperimen sedikit :)
Ed Gibbs
Jawaban:
98
DATE dan TIMESTAMP memiliki ukuran yang sama (7 byte). Byte tersebut digunakan untuk menyimpan abad, dekade, tahun, bulan, hari, jam, menit dan detik. Tapi TIMESTAMP memungkinkan untuk menyimpan info tambahan seperti detik pecahan (11 byte) dan detik pecahan dengan zona waktu (13 byte).
TIMESTAMP ditambahkan sebagai ANSI compliant ke Oracle. Sebelumnya, hanya ada DATE.
Dalam kasus umum, Anda harus menggunakan DATE. Tetapi jika ketepatan waktu adalah persyaratan, gunakan TIMESTAMP.
Dan tentang Java, kelas oracle.sql.DATE dari driver Oracle JDBC, menyediakan konversi antara tipe data Oracle Date / Timestamp dan kelas Java java.sql.Date, java.sql.Time dan java.sql.Timestamp.
Sebuah kata peringatan: sayangnya tampaknya, secara default, ketika Anda meminta kolom DATE di Oracle, itu mengembalikan Anda hanya "hari", tetapi jika Anda melemparkannya seperti TO_TIMESTAMP (DATE_COLUMN_NAME) maka itu mengembalikan Anda lebih presisi. Yang entah bagaimana bukan default dengan jdbc / hibernate, setidaknya tidak ada di sini.
rogerdpack
6
"Secara umum, Anda harus menggunakan DATE" - tetapi mengapa, tepatnya?
siledh
4
Anda harus menggunakan TIMESTAMP WITH TIME ZONE. Jika tidak, waktu musim panas akan menyebabkan waktu yang ambigu.
kmkaplan
15
Saya merasa sangat membingungkan, bahwa tipe DATE berisi informasi TIME. Bukan itu arti kata itu.
Ayah32
3
@ Daddy32 TIMESTAMPditambahkan sekitar 20 tahun setelahnya DATE. Mereka tidak bisa benar-benar kembali dan berubah DATE.
TIMESTAMP
sama denganDATE
, kecuali ia menambahkan presisi pecahan detik.DATE
akurat hingga detik dan tidak memiliki detik pecahan.TIMESTAMP
memiliki detik pecahan. Jumlah tempat desimal dalam detik tergantung pada OS server, misalnya Oracle pada mesin Windows 7 saya mengembalikan tiga tempat desimal untuk stempel waktu sedangkan kotak Solaris klien yang besar mengembalikan enam. Stempel waktu juga dapat berada di zona waktu tertentu atau dinormalisasi ke zona waktu umum - buka di sini lalu cari "TIMESTAMP" untuk informasi lebih lanjut, lalu bereksperimen sedikit :)Jawaban:
DATE dan TIMESTAMP memiliki ukuran yang sama (7 byte). Byte tersebut digunakan untuk menyimpan abad, dekade, tahun, bulan, hari, jam, menit dan detik. Tapi TIMESTAMP memungkinkan untuk menyimpan info tambahan seperti detik pecahan (11 byte) dan detik pecahan dengan zona waktu (13 byte).
TIMESTAMP ditambahkan sebagai ANSI compliant ke Oracle. Sebelumnya, hanya ada DATE.
Dalam kasus umum, Anda harus menggunakan DATE. Tetapi jika ketepatan waktu adalah persyaratan, gunakan TIMESTAMP.
Dan tentang Java, kelas oracle.sql.DATE dari driver Oracle JDBC, menyediakan konversi antara tipe data Oracle Date / Timestamp dan kelas Java java.sql.Date, java.sql.Time dan java.sql.Timestamp.
sumber
TIMESTAMP WITH TIME ZONE
. Jika tidak, waktu musim panas akan menyebabkan waktu yang ambigu.TIMESTAMP
ditambahkan sekitar 20 tahun setelahnyaDATE
. Mereka tidak bisa benar-benar kembali dan berubahDATE
.