web-dev-qa-db-fra.com

La date Oracle TO_CHAR ('Month DD, YYYY') contient des espaces supplémentaires

Quand je fais...

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

Je reçois ce qui suit:

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

Pourquoi y a-t-il des espaces supplémentaires entre mon mois et mon jour? Pourquoi ne les met-il pas simplement l'un à côté de l'autre?

21
contactmatt

si vous utilisez 'Month' dans to_char, il remplit à 9 caractères; vous devez utiliser l'abréviation 'MON', ou to_char puis ajustez-le et concaténez-le pour éviter cela. Voir, http://www.techonthenet.com/Oracle/functions/to_char.php

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

ou

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

Pourquoi y a-t-il des espaces supplémentaires entre mon mois et mon jour? Pourquoi est-ce que ça ne les met pas juste l'un à côté de l'autre?

Donc, votre sortie sera alignée. 

Si vous ne voulez pas utiliser le padding, utilisez le modificateur de format FM:

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

Référence: Modificateurs de modèle de format

59
NullUserException

Vous devez utiliser l'élément fm pour supprimer les espaces vides.

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

essaye ça:-

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
Ashish Brajesh
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
0
Brian Fitzgerald