Разница между Oracle DATE и TIMESTAMP

92

В чем разница между типом Oracle DATE и TIMESTAMP? Оба имеют компонент даты и времени? И какой тип в Java соответствует этим типам дат?

сверхновая звезда
источник
3
TIMESTAMPто же самое DATE, за исключением того, что добавлена ​​точность до долей секунды.
NullUserException 02
5
Самая большая разница: с DATEточностью до секунды и без долей секунды. TIMESTAMPимеет дробные секунды. Количество десятичных знаков в секундах зависит от ОС сервера, например, Oracle на моем компьютере с Windows 7 возвращает три десятичных разряда для метки времени, тогда как огромный блок Solaris клиента возвращает шесть. Метки времени также могут содержать определенный часовой пояс или быть нормализованы к общему часовому поясу - перейдите сюда, а затем найдите «TIMESTAMP» для получения дополнительной информации, затем немного поэкспериментируйте :)
Эд Гиббс

Ответы:

98

DATE и TIMESTAMP имеют одинаковый размер (7 байтов). Эти байты используются для хранения века, декады, года, месяца, дня, часа, минуты и секунды. Но TIMESTAMP позволяет хранить дополнительную информацию, такую ​​как дробные секунды (11 байтов) и дробные секунды с часовым поясом (13 байтов).

TIMESTAMP был добавлен в Oracle как ANSI-совместимый. До этого была только DATE.

В общих случаях следует использовать DATE. Но если требуется точность во времени, используйте TIMESTAMP.

Что касается Java, класс oracle.sql.DATE из драйвера Oracle JDBC обеспечивает преобразование между типом данных Oracle Date / Timestamp и классами Java java.sql.Date, java.sql.Time и java.sql.Timestamp.

Гильермо Луке
источник
1
Предупреждение: к сожалению, по умолчанию, когда вы запрашиваете столбец DATE в Oracle, он возвращает вам только «день», но если вы приведете его как TO_TIMESTAMP (DATE_COLUMN_NAME), тогда он вернет вам большую точность. Что-то не по умолчанию с jdbc / hibernate, по крайней мере, его здесь нет.
rogerdpack
6
«В общем случае следует использовать ДАТУ» - но почему именно?
siledh 03
4
Вам следует использовать TIMESTAMP WITH TIME ZONE. В противном случае переход на летнее время приведет к неоднозначному времени.
kmkaplan
15
Меня действительно сбивает с толку тот факт, что тип DATE содержит информацию о ВРЕМЕНИ. Слово означает не это.
Daddy32
3
@ Daddy32 TIMESTAMPбыл добавлен примерно через 20 лет DATE. Они действительно не могли вернуться и измениться DATE.
Уильям Робертсон