Announcement

Collapse
No announcement yet.

Fehler bei TO_DATE() in where-Bedingung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler bei TO_DATE() in where-Bedingung

    Hallo Forum,

    ich bewege mich in der Oracle-Umgebung noch nicht nicht mit absoluter Sicherheit und daher bringt mich folgender Sachverhalt nahezu zum Verzweifeln.

    Folgendes SQL-Statement:

    Select *
    From relij I
    Where I.Datum > to_date('2008-06-01 00:00:00')

    Setze ich dieses Statement direkt in SQL Plus ab, wird die Abfrage problemlos ausgeführt.

    Ich löse das Ganze aus Excel 2003 mittels VBA-Code aus und bekomme die Fehlermeldung: "[Oracle][ODBC][Ora]ORA-01861: literal does not match format string"

    Ich habe schon die Beiträge durchforstet, aber nichts vergleichbares gefunden. Kann mir bitte jemand einen Tip geben, woran das liegt?

    Vielen Dank schonmal im Voraus!

    Grüße,
    firsty78

  • #2
    http://www.techonthenet.com/oracle/errors/ora01861.php
    Christian

    Comment


    • #3
      Hallo,

      um unabhängig von den Voreinstellungen verschiedener Clients zu sein, solltest du einfach die Formatierung explizit angeben:
      [highlight=sql]
      ...Where I.Datum > to_date('2008-06-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
      [/highlight]

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Versuche ansonsten mal um dein I.Datum noch die Funktion to_char zu legen, wie auch um dein Bedingungsdatum.

        Code:
        ...
        WHERE to_char(I.Datum) > to_char(to_date('2008-06-01 00:00:00'),"dein in Access gespeichertes Datumsformat"))
        Zuletzt editiert von Chris-Phil; 23.06.2008, 09:48.

        Comment


        • #5
          Versuche ansonsten mal um dein I.Datum noch die Funktion to_char zu legen, wie auch um dein Bedingungsdatum.
          Und was soll das bringen? Mal davon abgesehen, dass jetzt ein evtl. vorhandener Index nicht mehr verwendet werden kann.

          Dim
          Zitat Tom Kyte:
          I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

          Comment


          • #6
            Ich kenne das Problem aus Access, da ich mal versucht habe, eine Oracle-Tabelle da mit einzubinden. Die Kompatibilität der Datentypen ist sehr schlecht (das würde ich als Grund fü das Problem annehmen) und daher das ganz auf die Ebene String bringen. Das SQL-Statement wird sicherlich noch in der Schnittstelle interpretiert, was dann zum Fehler führen könnte.

            Comment


            • #7
              Also wenn das wirklich das Problem löst, sollte man in Erwägung ziehen einen funktionsbasierten index auf das Datum zu legen, falls dies die einschränkende Bedingung in dem SQL ist:
              Code:
              create index index_name on tabellen_name(to_char(datum,'YYYY-MM-DD HH24:MI:SS'));
              Ansonsten würde jede Abfrage in einem Full Tablescan resultieren.

              Dim
              Zitat Tom Kyte:
              I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

              Comment

              Working...
              X