character var Datum in Timestamp umwandeln

Hallo Forum,
ich habe eine Tabelle mit einer Datumsspalte, das Datum ist in dieser Spalte leider als character var eingespielt, ein Datum kann dabei “2014-08-05” oder so “2014-07-29T15:48:06” ausschauen.
Um nun abfragen zu können gib mir alle Datensätze die älter als der 5.8.2014 sind, wollte ich ein View erzeugen und die Datumsspalte umtransformieren, jedoch scheitere ich an der Benutzung von “to_timestamp”. Vielleicht kann mir da jemand einen Denkanstoss geben.
mit bestem Dank und einen schönen Tag wünschend
Balli

Woran scheiterst du? Stimmt der Formatstring? Hast du im Handbuch nachgelesen? Welche Fehlermeldung erscheint? Die Unterschiede des Datumsformats könntest du über einen case-Ausdruck abfangen.

Gruß Uwe



select to_timestamp('2014-08-01', 'yyyy-mm-dd hh24:mi:iss'), to_timestamp('2014-07-29T15:48:06', 'yyyy-mm-dd hh24:mi:iss')

oder eben:

select to_timestamp(die_datumsspalte, ''yyyy-mm-dd hh24:mi:iss'') from the_table

Das setzt aber voraus, dass alle Werte korrekt formatiert sind.

Auf lange Sicht die einzig sinnvolle Lösung ist aber die Spalte in den Datentyp timestamp zu konvertieren.

Absolut richtig. Daher frisch ans Werk:

test=# select * from ballibum ;
        datum
---------------------
 2014-08-05
 2014-07-29T15:48:06
(2 rows)

Time: 0,298 ms
test=*# \d ballibum
  Table "public.ballibum"
 Column | Type | Modifiers
--------+------+-----------
 datum  | text |

test=*# alter table ballibum alter column datum type timestamp using(case when length(datum) = 19 then to_timestamp(datum,'yyyy-mm-ddThh24:mi:ss') else to_timestamp(datum,'yyyy-mm-dd') end);
ALTER TABLE
Time: 4,769 ms
test=*# \d ballibum
             Table "public.ballibum"
 Column |            Type             | Modifiers
--------+-----------------------------+-----------
 datum  | timestamp without time zone |

test=*# select * from ballibum ;
        datum
---------------------
 2014-08-05 00:00:00
 2014-07-29 15:48:06
(2 rows)

Andreas

Besten Dank euch. Ja, auf lange Sicht ist es angedacht die Spalte zu ändern, leider ist dass eine Software einer Fremdfirma und bis der Auftrag durch und bearbeitet ist muss ich mit dieser Lösung leben.
mit bestem Dank
Balli