#sql #oracle #format
#sql #Oracle #форматирование
Вопрос:
У нас есть столбец типа varchar2 (200 символов), который содержит метку времени в формате 2019-03-28:17:01:44.407000000 Теперь мы хотели бы обновить значения в столбце, чтобы формат выглядел как 28.03.2019 5:01:43.475 PM Мы используем Oracle 12c.
Я новичок в oracle, любая информация была бы полезна.
Ответ №1:
Это довольно ужасная модель данных. Временная метка действительно должна храниться в timestamp
столбце, а не в varchar2
. И потому, что тогда тип данных определяет, что на самом деле находится в столбце, и потому, что это более эффективно, и потому, что это позволяет разумно использовать все функции метки времени Oracle для данных.
Предполагая, что вы застряли с неверной моделью данных
update your_table
set your_column = to_char( to_timestamp( your_column, 'YYYY-MM-DD:HH24:MI:SS.FF9' ),
'MM/DD/YYYY HH:MI:SS.FF3 PM' )
обновит все данные до нового формата в маловероятном случае, если каждое отдельное значение в таблице уже находится в правильном формате. В большинстве реальных систем вам сначала потребуется выполнить значительную очистку, потому что неизбежно кто-то сохранит в вашем столбце неправильную строку или две.
Если вам удастся успешно обновить все данные, имейте в виду, что любые запросы, которые это делают order by your_column
, почти наверняка перестанут делать то, что вы хотите. Поскольку столбец является a varchar2
, а не a timestamp
, сортировка выполняется в алфавитном порядке, а не по моменту времени, который представляет строка. Если вы измените формат на что-то, где временной порядок не соответствует алфавитному порядку, у вас, вероятно, будут недовольные пользователи.
Комментарии:
1. Большое спасибо, Джастин. Это сработало выберите column_name, to_char(to_timestamp(column_name, ‘ММ / ДД / ГГГГ ЧЧ: MI: SS.** FF3 ** PM’), ‘ГГГГ-ММ-ДД: ЧЧ24: MI: SS.** FF **’) из table_name Мы используем SAP Hybris иБД — это MSSQL, сейчас мы выполняем миграцию БД на Oracle. Некоторые таблицы не генерируются Hybris автоматически, поэтому мы перенесли их вручную. Hybris позаботился о формате для создаваемых таблиц. Теперь мы пытаемся отформатировать столбец в соответствии с Hybris.