Oracle Date TO_CHAR ( "Месяц DD, YYYY" ) содержит дополнительные пробелы
Когда я...
Select TO_CHAR (date_field, 'Month DD, YYYY')
from...
Я получаю следующее:
July 01, 2011
April 01, 2011
January 01, 2011
Почему существуют промежутки между моим месяцем и днем? Почему он просто не ставит их рядом друг с другом?
Ответы
Ответ 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