Проблема с выводом формата даты в Oracle - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть требование, когда мне нужно вставить поля даты в столбец varchar. Я непосредственно вставляю запись в таблицу без каких-либо типов. В одной среде он вставляется как 29-AUG-16, а в другой - как 29-08-2016. Следовательно, моя последующая обработка данных не удалась. Я ожидаю данных как DD-MON-RR в обеих средах. В обоих средах формат nls равен DD-MON-RR в таблице параметров сеанса nls. В чем причина разницы в двух средах? Я пробовал typecast с использованием TO_CHAR (DATECOL, 'DD-MON-RR'), но все равно данные вставляются в формате дд-мм-гггг

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Вы можете использовать функцию TO_CHAR , чтобы преобразовать дату в символ и вставить ее в столбец varchar.

Вместо того, чтобы просто писать date_column, вы должны использовать что-то подобное в вашем запросе вставки

INSERT INTO date_tab VALUES(TO_CHAR(date_col, 'DD-MON-YY'))

0 голосов
/ 03 апреля 2019

Значения NLS устанавливаются на сеанс в зависимости от настроек сервера, настроек клиента и явных настроек сеанса. Поэтому, если вам нужен стандартный формат для всех сеансов, вы должны установить желаемый NLS на уровне операций, чтобы переопределить все возможные (почти непредсказуемые) результирующие комбинации NLS. В функции to_char вы должны установить третий параметр (NLS) для выбранного вами формата даты NLS.

...