Oracle - выбор даты / времени в миллисекундах из поля типа данных DATE - PullRequest
4 голосов
/ 26 февраля 2010

У меня есть last_update_date столбец, определенный как DATE поле

Я хочу получить время в миллисекундах.

В настоящее время у меня есть:

TO_CHAR(last_update_date,'YYYY-DD-MM hh:mi:ss am')

Но я тоже хочу получить миллисекунды.

Я немного погуглил и думаю, что у DATE полей не будет миллисекунд. будут только TIMESTAMP поля.

Есть ли способ получить миллисекунды? У меня нет возможности изменить тип данных для поля.

Ответы [ 3 ]

11 голосов
/ 26 февраля 2010

Поля DATE в Oracle хранят данные с точностью до секунды, поэтому нет способа предоставить что-то более точное, чем это. Если вы хотите большей точности, вы должны использовать другой тип, такой как TIMESTAMP.

Здесь - ссылка на другой вопрос SO относительно точности даты и времени в Oracle.

3 голосов
/ 26 февраля 2010

Как говорит RC, тип DATE поддерживает только детализацию с точностью до секунды.

Если преобразование в TIMESTAMP действительно не вариант, то как насчет добавления еще одного числового столбца, который просто содержит миллисекунды?

Эта опция будет более громоздкой, чем столбец TIMESTAMP, но она может быть работоспособной, если преобразование типа невозможно.

0 голосов
/ 01 июля 2014

В аналогичной ситуации, когда я не мог изменить поля в таблице (не мог позволить себе «сломать» стороннее программное обеспечение), но требовал точности менее секунды, я добавил дополнительную таблицу 1: 1 триггер после вставки на исходной таблице для размещения отметки времени в дополнительной таблице.

Если вам нужно знать только ПОРЯДОК записей, добавляемых в течение одной секунды, вы можете сделать то же самое, только используя последовательность в качестве источника данных для дополнительного поля.

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