2016-02-03 3 views
1

Я пытаюсь отображать только дату и время таблицы в определенном формате. Этот формат - DD-MON-YYYY и время HH24: MI: SS. Я не понимаю, как заставить оба формата работать вместе. Я могу заставить их работать отдельно.Форматирование времени и даты SQL по отношению к двойной таблице

select to_char(sysdate, 'DD-MON-YYYY', systimestamp,'HH24:MI:SS') from dual; 

Моя ошибка «слишком много аргументов». Я хочу понять, почему он не работает.

+0

Обратите внимание, что 'DATE' в Oracle, например' SYSDATE', действительно является DATETIME (с точностью до ближайшей секунды). –

ответ

2

От the documentation TO_CHAR принимают три аргумента при использовании дата

  • даты или даты время
  • модель формата
  • необязательный параметр NLS для локализации Вы можете объединить два результата вместе с этим.

    выберите to_char (sysdate, 'DD-MON-YYYY') || ' «|| TO_CHAR (systimestamp, 'HH24: MI: SS') из двойного;

Но почему, когда вы это делаете один звонок

SELECT TO_CHAR(systimestamp,'DD-MON-YYYY HH24:MI:SS') from dual; 

NB SQL не чувствительны к регистру в отношении ключевых слов. Верхний или нижний регистр обе работают.

+0

Теперь я понимаю. Есть ли причина, по которой вы сделали to_char в нижнем регистре в первый раз, а второй - второй? – lnjblue

+0

Таким образом, конкатенация действует одинаково даже при использовании только одного вызова. Я этого не знал, и это имеет смысл. – lnjblue

+0

Injblue - на самом деле это не конкатенация. И DATE, и различные типы данных TIMESTAMP включают как дату, так и время как фундаментальную часть данных. DATE разрешает время до второго, а TIMSTAMP разрешается до наносекунды. И, конечно, если вы все еще не хватает, SYSDATE - это DATE, а SYSTIMESTAMP - TIMESTAMP. – EdStevens

1

Try:

select to_char(sysdate, 'DD-MON-YYYY HH24:MI:SS') from dual;