Oracle Тип данных конвертировать - PullRequest
0 голосов
/ 02 апреля 2020

В моей таблице (EventPlanLine) есть два столбца, которые создали тип данных Date, TimeStart и TimeEnd. Ну, данные вставки ниже показывают:

Insert into EVENTPLANLINE (TIMESTART,TIMEEND) 
values (to_date('25-OCT-18 8:00:00','DD-MON-RR HH24:MI:SS'),
        to_date('25-OCT-18 17:00:00','DD-MON-RR HH24:MI:SS'));

Результат:

25-OCT-18, 25-OCT-18

Простите, я забрал только те две колонки, которые вставляют данные для отображения. Результат представления данных в столбце показывает формат DD-MON-RR без времени. Вот вопрос, как данные могут быть представлены в формате DD-MON-RR HH24: MI: SS. Я проверил на онлайн-ресурсах, я могу изменить NLS_DATE_FORMAT с Oracle, да, это так и со временем, как показано ниже:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI:SS'

Но все таблицы, тип данных которых - Дата, изменились в базе данных. Так есть ли решение может изменить один тип таблицы даты, а не всю базу данных?

1 Ответ

0 голосов
/ 02 апреля 2020

Столбец даты не имеет удобочитаемого формата; существует внутреннее представление, и клиент решает, как отобразить результаты (обычно на основе NOS_DATE_FORMAT), если только вы явно не отформатируете столбец в своем запросе с to_char().

Но все таблицы, данные которых тип Дата была изменена в базе данных

Нет, ваш клиент использует этот параметр для отображения дат в виде форматированных строк. В базе данных изменился Notign.

Так есть ли решение, которое может изменить один тип даты таблицы вместо всей базы данных?

Нет, вы не можете установить формат для столбец в таблице - это просто даты.

Все, что вы можете сделать, это явно отформатировать как часть вашего запроса; каждая дата может быть отформатирована по-разному. Скорее надумано, но для демонстрации:

alter session set nls_date_format = 'DD-Mon-RR';

select
  timestart,
  timeend,
  to_char(TIMESTART, 'YYYY-MM-DD HH24:MI:SS') as timestart_2,
  to_char(TIMEEND, 'FMDay DD/Mon/YYYY HH:MI AM', 'NLS_DATE_LANGUAGE=ENGLISH') as timeend_2
from EVENTPLANLINE;

TIMESTART TIMEEND   TIMESTART_2         TIMEEND_2                  
--------- --------- ------------------- ---------------------------
25-Oct-18 25-Oct-18 2018-10-25 08:00:00 Thursday 25/Oct/2018 5:0 PM

Если формат результата имеет значение, не полагайтесь на форматы NLS, поскольку кто-то другой, выполняющий ваш код, может иметь другие настройки в своем сеансе. (И как примечание, не полагайтесь на неявное преобразование строк в даты - вас здесь нет, но они часто go вместе ...)

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