sql - to_char - to_date oracle dd/mm/yyyy
Oracle Date TO_CHAR(''Month DD, YYYY'') tiene espacios adicionales en ella (5)
Cuando lo hago...
Select TO_CHAR (date_field, ''Month DD, YYYY'')
from...
Me sale lo siguiente:
July 01, 2011
April 01, 2011
January 01, 2011
¿Por qué hay espacios extra entre mi mes y mi día? ¿Por qué no los pone uno al lado del otro?
¿Por qué hay espacios extra entre mi mes y mi día? ¿Por qué no los pone uno al lado del otro?
Así se alineará su salida.
Si no quieres relleno usa el modificador de formato FM
:
SELECT TO_CHAR (date_field, ''fmMonth DD, YYYY'')
FROM ...;
Referencia: modificadores del modelo de formato
Debe utilizar el elemento fm para eliminar espacios en blanco.
SELECT TO_CHAR(sysdate, ''fmDAY DD "de" MONTH "de" YYYY'') CURRENT_DATE
FROM dual;
prueba esto:-
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;
si usa ''Mes'' en to_char it right pads a 9 caracteres; tienes que usar el abreviado ''MON'', o to_char, luego recórtalo y concatena para evitar esto. Consulte, http://www.techonthenet.com/oracle/functions/to_char.php
select trim(to_char(date_field, ''month'')) || '' '' || to_char(date_field,''dd, yyyy'')
from ...
o
select to_char(date_field,''mon dd, yyyy'')
from ...
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