Різниця між датою оракула та часом


92

Яка різниця між Oracle DATE та TIMESTAMP? Обидва мають компонент дати та часу? Також що є відповідним типом у Java для цих типів дат?


3
TIMESTAMPте саме, що DATE, за винятком того, що додало точність дробових секунд
NullUserException

5
Найбільша різниця: DATEточний до секунди і не має дробових секунд. TIMESTAMPмає дробові секунди. Кількість десяткових знаків у секундах залежить від ОС сервера, наприклад, Oracle на моїй машині з Windows 7 повертає три знаки після коми для позначки часу, тоді як величезне вікно Solaris клієнта повертає шість. Мітки часу також можуть містити певний часовий пояс або бути нормалізованими до загального часового поясу - перейдіть сюди, а потім знайдіть "TIMESTAMP" для отримання додаткової інформації, а потім трохи поекспериментуйте :)
Ед Гіббс,

Відповіді:


98

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

TIMESTAMP був доданий як ANSI-сумісний з Oracle. До цього він мав лише 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

4
Ви повинні використовувати TIMESTAMP WITH TIME ZONE. Інакше перехід на літній час введе неоднозначний час.
kmkaplan

15
Мені здається дуже заплутаним, що тип DATE містить інформацію про TIME. Не те слово означає.
Daddy32

2
@ Daddy32 TIMESTAMPбуло додано приблизно через 20 років DATE. Вони не могли справді повернутися і змінитися DATE.
Вільям Робертсон,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.