# ORACLE: bedingte Formatirung to_char bei DATE Feld



## rfriebel (16. April 2010)

Hallo,

folgendes Problem. DATE Felder können sowohl ein Datum, eine Zeit oder beides speichern. Habe ich zum Beispiel nur ein Datum im Feld gespeichert, erhalte ich folgendes:

select to_char(MyDate, 'YYYYMMDDMISS' ) from MyTable

Ergebnis: '20100416*0000*'

Genau die Nullen möchte ich aber nicht, wenn es sich nur um ein Datum handelt. Wie gesagt, es könnten aber auch manchmal Zeiten mit drin stehen, die möchte ich dann haben.
Und noch was: die Formatmaske ist von der Anwendung her konfiguriert. Ich kann also nicht testen und wenn der Wert MyDate nur ein Datum ist ein verkürzte Formatmaske verwenden.

Danke und Gruß


----------



## gorefest (16. April 2010)

AFAIK speichert Oracle DATE Werte als Timestamp mit 0 Uhr.

Du könntest also


```
select  case
                 when substr(to_char(MyDate, 'YYYYMMDDMISS' ) ,8,4) = '0000' then
                            (...)
                 else
                           (....)
             end 
from MyTable
```

machen


----------

