Изменить значения даты с помощью PL / SQL на мм / дд / гггг - PullRequest
2 голосов
/ 13 января 2012

В моей локальной базе данных Oracle 11g есть несколько дат в следующем формате:

01-JUL-85

Как мне изменить его на этот формат (мм / дд / гггг) с использованием PL / SQL:

7/01/1985

С благодарностью ...

1 Ответ

11 голосов
/ 13 января 2012

Если столбец является типом данных даты, то только ваши настройки NLS_DATE заставляют их отображаться в формате DD-MON-YYYY.

Чтобы проверить текущий формат NLS_DATE, выполните следующее:

SELECT value 
  FROM V$NLS_Parameters 
 WHERE parameter ='NLS_DATE_FORMAT';

Oracle хранит все даты во внутреннем двоичном формате и использует формат NLS_DATE для их отображения (если явно не указано, чтобы они отображались иначе).

Вы можете изменить настройки NLS_DATE на MM/DD/YYYY или TO_CHAR столбец даты, используя:

TO_CHAR(<date_column>, 'MM/DD/YYYY')

чтобы увидеть нужный вам формат.

Вы можете изменить формат NLS_DATE для текущего сеанса или изменить параметры базы данных, чтобы изменить формат NLS_DATE по умолчанию для самой базы данных.

Если столбец относится к типу VARCHAR2, вам необходимо сначала преобразовать его в дату, а затем отформатировать выходные данные одним из описанных выше способов.

См .: http://ss64.com/ora/syntax-nls.html

и: http://www.dba -oracle.com / t_nls_date_format_sysdate.htm

, например

SELECT TO_CHAR(sysdate, 'MM/DD/YYYY') as current_date
  FROM dual;

или

ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY';

SELECT sysdate
 FROM dual;

В чистом PL / SQL

DECLARE
   v_date DATE := sysdate;
BEGIN
   DBMS_OUTPUT.put_line(TO_CHAR(v_date, 'MM/DD/YYYY'));
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...