Oracle – получение даты/времени в миллисекундах из поля типа данных DATE

StackOverflow https://stackoverflow.com/questions/2343708

  •  23-09-2019
  •  | 
  •  

Вопрос

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

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

На данный момент у меня есть:

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

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

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

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

Нет правильного решения

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top