it-swarm.com.de

Das Oracle-Datum TO_CHAR ('Month DD, YYYY') enthält zusätzliche Leerzeichen

Wenn ich ...

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

Ich bekomme folgendes:

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

Warum gibt es zusätzliche Leerzeichen zwischen meinem Monat und Tag? Warum werden sie nicht einfach nebeneinander gestellt?

21
contactmatt

wenn Sie 'Month' in to_char verwenden, werden bis zu 9 Zeichen angegeben. Sie müssen die Abkürzung 'MON' oder to_char verwenden und dann abschneiden und verketten, um dies zu vermeiden. Siehe http://www.techonthenet.com/Oracle/functions/to_char.php

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

oder

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

Warum gibt es zwischen meinem Monat und Tag zusätzliche Leerzeichen? Warum stellt es sie nicht einfach nebeneinander?

So wird Ihre Ausgabe ausgerichtet. 

Wenn Sie kein Auffüllen möchten, verwenden Sie den Formatmodifizierer FM:

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

Referenz: Formatmodifikatoren

59

Sie sollten fm Element verwenden, um Leerzeichen zu löschen.

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

wählen Sie to_char (sysdate, 'DD-fmMONTH-YYYY') "Date" aus Dual;

Das obige Abfrageergebnis ist wie unten angegeben.

Datum

01-APRIL-2019

0
Lijo Mathews

versuche dies:-

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