Подтвердить что ты не робот

Oracle Date TO_CHAR ( "Месяц DD, YYYY" ) содержит дополнительные пробелы

Когда я...

Select TO_CHAR (date_field, 'Month DD, YYYY')
from...

Я получаю следующее:

July      01, 2011
April     01, 2011
January   01, 2011

Почему существуют промежутки между моим месяцем и днем? Почему он просто не ставит их рядом друг с другом?

4b9b3361

Ответ 1

если вы используете "Месяц" в to_char, это правые прокладки до 9 символов; вы должны использовать сокращенный "MON" или to_char, затем обрезать и объединить его, чтобы избежать этого. См. http://www.techonthenet.com/oracle/functions/to_char.php

select trim(to_char(date_field, 'month')) || ' ' || to_char(date_field,'dd, yyyy')
  from ...

или

select to_char(date_field,'mon dd, yyyy')
  from ...  

Ответ 2

  Почему между моим месяцем и днем есть дополнительные пробелы? Почему он просто не ставит их рядом друг с другом?

Таким образом, ваш вывод будет выровнен.

Если вы не хотите использовать отступы, используйте модификатор формата FM:

SELECT TO_CHAR (date_field, 'fmMonth DD, YYYY') 
  FROM ...;

Справка: Модификаторы модели формата

Ответ 3

Вы должны использовать элемент fm для удаления пробелов.

SELECT TO_CHAR(sysdate, 'fmDAY DD "de" MONTH "de" YYYY') CURRENT_DATE
FROM   dual;

Ответ 4

SQL> -- original . . .
SQL> select
  2  to_char( sysdate, 'Day "the" Ddth "of" Month, yyyy' ) dt
  3  from dual;

DT
----------------------------------------
Friday    the 13th of May      , 2016

SQL>
SQL> -- collapse repeated spaces . . .
SQL> select
  2  regexp_replace(
  3      to_char( sysdate, 'Day "the" Ddth "of" Month, yyyy' ),
  4      '  * *', ' ') datesp
  5  from dual;

DATESP
----------------------------------------
Friday the 13th of May , 2016

SQL>
SQL> -- and space before commma . . .
SQL> select
  2  regexp_replace(
  3      to_char( sysdate, 'Day "the" Ddth "of" Month, yyyy' ),
  4      '  *(,*) *', '\1 ') datesp
  5  from dual;

DATESP
----------------------------------------
Friday the 13th of May, 2016

SQL>
SQL> -- space before punctuation . . .
SQL> select
  2  regexp_replace(
  3      to_char( sysdate, 'Day "the" Ddth "of" Month, yyyy' ),
  4      '  *([.,/:;]*) *', '\1 ') datesp
  5  from dual;

DATESP
----------------------------------------
Friday the 13th of May, 2016

Ответ 5

попробуйте следующее: -

select to_char(to_date('01/10/2017','dd/mm/yyyy'),'fmMonth fmDD,YYYY') from dual;

select to_char(sysdate,'fmMonth fmDD,YYYY') from dual;

Ответ 6

выберите to_char (sysdate, 'DD-fmMONTH-YYYY') "Date" из Dual;

Приведенный выше результат запроса будет таким, как указано ниже.

Дата

01-Апрель-2019