Oracle: формат даты - PullRequest
       10

Oracle: формат даты

0 голосов
/ 02 октября 2019

Я пытаюсь объединить дату и время, которые равны VARCHAR2, а затем передать их DATE. Проблема в том, что когда я передаю его в DATE, он не печатает дату и время в формате date. Что я делаю не так?

  o_data_final DATE;
  i_data       VARCHAR2:= '12/06/2000';
  i_hora       VARCHAR2:= '12:23:00';

  dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
  --prints correctly: 12/06/2000 12:23:00

  SELECT to_date(concat(concat(i_data,' '),i_hora), 'dd/mm/yyyy hh24:mi:ss')
  INTO o_data_final
  FROM dual;

  dbms_output.put_line('data:'||to_char(o_data_final));
  --prints wrong: 00.06.12

Я хочу, чтобы o_data_final был 12/06/2000 12:23:00. Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 октября 2019

Затем вам нужно передать формат в функцию TO_CHAR, например:

dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh:mi:ss'));

Oracle хранит дату во внутреннем двоичном формате, и у нее нет конкретного читаемого человеком формата. Вам нужно будет использовать формат в TO_CHAR или установить формат по умолчанию для сессии, используя NLS_DATE_FORMAT.

alter session set NLS_DATE_FORMAT = 'dd/mm/yyyy hh:mi:ss';

В настоящее время вы получаете вывод: 00.06.12, как в данный момент ваш NLS_DATE_FORMATустановить yy.mm.dd

Вы можете получить текущее значение сеанса NLS_DATE_FORMAT, используя следующий запрос:

SELECT
    *
FROM
    NLS_SESSION_PARAMETERS
WHERE
    PARAMETER = 'NLS_DATE_FORMAT';

Cheers !!

0 голосов
/ 02 октября 2019

попробуйте пожалуйста:

  declare 
  o_data_final DATE;
  i_data       VARCHAR2(2000):= '12/06/2000';
  i_hora       VARCHAR2(2000):= '12:23:00';
  begin
  dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
  --prints correctly: 12/06/2000 12:23:00

  SELECT to_date(i_data||' '||i_hora, 'dd/mm/yyyy hh24:mi:ss')
  INTO o_data_final
  FROM dual;

  dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh24:mi:ss'));
  end;

или

  declare 
  o_data_final DATE;
  i_data       VARCHAR2(2000):= '12/06/2000';
  i_hora       VARCHAR2(2000):= '12:23:00';
   begin
  dbms_output.put_line('print:'||concat(concat(i_data,' '),i_hora));
  --prints correctly: 12/06/2000 12:23:00

  SELECT to_date(concat(concat(i_data,' '),i_hora), 'dd/mm/yyyy hh24:mi:ss')
  INTO o_data_final
  FROM dual;

  dbms_output.put_line('data:'||to_char(o_data_final, 'dd/mm/yyyy hh24:mi:ss'));
  end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...