Какой лучший способ хранить миллисекунды в Oracle? - PullRequest
0 голосов
/ 11 марта 2009

Я использую Oracle 9, но система должна работать и для Oracle 8 и 10.

Проблема в том, что поля даты не могут хранить ничего, кроме секунд, но я храню серию событий, которые происходят с точностью до миллисекунды. Очевидным решением является создание нового столбца для хранения миллисекунд. Но это лучшее решение?

Это не кажется мне очень умным, потому что для этого необходимо, чтобы все мои запросы (их было много) потребовали изменения в предложении ORDER BY.

Ответы [ 5 ]

2 голосов
/ 11 марта 2009

В Oracle 8 вам нужно было обойти (поле varchar или два поля, datetime и 2nd для хранения миллисекунд)

Если вы можете как-то избежать требования сделать это в Oracle 8, рассмотрите тип данных TIMESTAMP.

2 голосов
/ 11 марта 2009

Вы можете использовать тип отметки времени. Вот хорошее объяснение этого:

http://it.toolbox.com/blogs/database-solutions/a-comparison-of-oracles-date-and-timestamp-datatypes-6681

Хотя это не очень хорошо поддерживается в Oracle 8.

0 голосов
/ 21 февраля 2012

Возможно, слишком поздно, чтобы наткнуться на эту тему. Но для более ранних версий Oracle, в которых Timestamp не поддерживается. Всегда можно сохранить значение метки времени в столбце типа данных Long. Сохраняя в БД, можно сохранить timestamp.getTime () в Java, который возвращает долго. При чтении из БД можно прочитать длинное значение и создать метку времени, указав ее в конструкторе меток времени. Надеюсь, это поможет кому-то, работающему на устаревших системах.

0 голосов
/ 11 марта 2009

Как уже упоминалось, отметка времени - это тип данных в Oracle 9 и более поздних версиях, который поддерживает искомую точность в миллисекундах. Если вы также хотите поддерживать oracle 8, вам придется использовать varchar2 (25) для хранения значения. В oracle8 вам придется использовать функцию java или внешнюю программу, чтобы получить точность в миллисекундах для хранения в столбце varchar2 таблицы.

0 голосов
/ 11 марта 2009

Я бы предложил вам выбрать между поддержкой Oracle 8 (которая скоро выйдет из строя, если она еще не работает) и поддержкой в ​​миллисекундах. Из этих двух я бы рекомендовал отказаться от Oracle 8 и поддерживать только Oracle 9 или более позднюю версию.

[Справедливое раскрытие информации: я работаю на конкурента - я бы даже рекомендовал перейти к нам. Если моя информация об отказе от поддержки Oracle 8 неверна, извините. Но совет настолько непредубежден, насколько я могу это сделать.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...