Дата Oracle TO_CHAR ('Месяц ДД, ГГГГ') содержит лишние пробелы - PullRequest
22 голосов
/ 23 августа 2011

Когда я делаю ...

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

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

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

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

Ответы [ 6 ]

62 голосов
/ 23 августа 2011

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

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

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

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

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

8 голосов
/ 23 августа 2011

, если вы используете «Месяц» в 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 ...  
6 голосов
/ 07 января 2017

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

SELECT TO_CHAR(sysdate, 'fmDAY DD "de" MONTH "de" YYYY') CURRENT_DATE
FROM   dual;
0 голосов
/ 01 апреля 2019

select to_char (sysdate, 'DD-fmMONTH-YYYY') "Date" from Dual;

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

Date

01-апрель-2019

0 голосов
/ 18 октября 2017

попробуйте это: -

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;
0 голосов
/ 13 мая 2016
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...