Markus: TCL & Oracle

Hallo zusammen,
ich hab da ein kleines Problem bzgl. der Datums-Konvertierung...
Ich hole mir einen Zeitstempel aus der Datenbank und würde diesen gerne in Sekunden seit 1970 (...) konvertieren.

Hier meine source:
#------------------------
set cur_tmp [oraopen $con]

set sql "select to_char(max(trans_start),'dd.mm.yyyy HH24:MI:SS') from data_transfer where trans_app='$prog_name'"

orasql $cur_tmp $sql

orafetch $cur_tmp {set log_start_date [format "%s" @0]}

set log_start_date [clock scan $log_start_date]
#------------------------

Ich bekomme den folgenden Fehler bei Ausführung über oratclsh:
unable to convert date-time string "13.12.2004 13:57:58"

Hat jemand von Euch eine Idee ?!
Ich bin dankbar für jede Hilfe...

Gruß,
Markus

  1. yo,

    set sql "select to_char(max(trans_start),'dd.mm.yyyy HH24:MI:SS') from data_transfer where trans_app='$prog_name'"

    Hat jemand von Euch eine Idee ?!

    der fehler liegt meiner vermutung nach in der formatierung. zum einen kannst du sie mal komplett weglassen (optional), um zu sehen, ob der fehler wirklich dort liegt. und wenn ja tippe ich darauf, dass die buchstaben wie yyyy gross geschrieben werden müssen (case sensitive).

    Ilja

    1. der fehler liegt meiner vermutung nach in der formatierung. zum einen kannst du sie mal komplett weglassen (optional), um zu sehen, ob der fehler wirklich dort liegt. und wenn ja tippe ich darauf, dass die buchstaben wie yyyy gross geschrieben werden müssen (case sensitive).

      Hey,
      danke für Deine Antwort.
      der Fehler muss allerdings woanders liegen...
      Weitere Ideen?!

      Gruß,
      Markus

      1. yo,

        der Fehler muss allerdings woanders liegen...

        kommt den der gleiche fehler, wenn du die gesamte formatierung weg läßt ?

        Weitere Ideen?!

        die entsprechende spalte ist aber schon vom typ date oder ?

        Ilja

        1. kommt den der gleiche fehler, wenn du die gesamte formatierung weg läßt ?

          --> ja

          die entsprechende spalte ist aber schon vom typ date oder ?

          --> ja

          Gruß,
          Markus

          1. yo,

            dann fällt mir ausser trial on error nicht mehr viel ein. aber das wirst du sicherlich schon alles hinter dir haben. vielleicht einfach mal alles unnötige wie die aggregat-funktion weglassen und als formatieung nur 'YYYY' angeben.

            Ilja

            1. ok. Trotzdem danke für Deine Hilfe...

              Gruß,
              Markus

  2. set sql "select to_char(max(trans_start),'dd.mm.yyyy HH24:MI:SS') from data_transfer where trans_app='$prog_name'"

    orasql $cur_tmp $sql

    orafetch $cur_tmp {set log_start_date [format "%s" @0]}

    set log_start_date [clock scan $log_start_date]
    #------------------------

    Ich bekomme den folgenden Fehler bei Ausführung über oratclsh:
    unable to convert date-time string "13.12.2004 13:57:58"

    du solltest bei to_char auch sagen wohin.

    select to_char(max(trans_start),'dd.mm.yyyy HH24:MI:SS') DatumZeit

    1. du solltest bei to_char auch sagen wohin.
      select to_char(max(trans_start),'dd.mm.yyyy HH24:MI:SS') DatumZeit

      hey,
      danke für die Antwort. Dies hat allerings nix mit meinem vorliegenden Problem zu tun ...

      Gruß,
      Markus

  3. Ich bekomme den folgenden Fehler bei Ausführung über oratclsh:
    unable to convert date-time string "13.12.2004 13:57:58"

    Keine ORA-00xxxx Meldung? Dann dürfte es ein Problem Deines Treiber sein, der auf die OCI zugreift. In diesem Fall scheint das PHP zu sein.