Announcement

Collapse
No announcement yet.

Fehlerhafte Datumsasugabe mit to_char

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

  • Fehlerhafte Datumsasugabe mit to_char

    Hallo zusammen,

    die Frage ist mir schon fast peinlich, aber bislang hat es immer ohne Probleme funktioniert und plötzlich ergibt die Anfrage falsche Datensätze.
    Als RDBMS habe ich Oracle 11g und greife mit dem Developer darauf zu.

    Die Zeile

    Code:
    ...
    where ev.date between '01.05.2015' and '02.05.2015'
    wird völlig korrekt ausgeführt.

    Hingegen
    Code:
    where to_char(ev.date,'dd.mm.yyyy hh24:mi:ss') between '01.05.2015 00:00:00' and '01.05.2015 23:59:59'
    liefert beliebige Datensätze aus der Tabelle.
    Im 1. Beispiel wird defaultmäßig die Uhrzeit auf '00:00:00' gesetzt, während sie im 2. Beispiel gesetzt wird.
    Hintergrund ist, ich möchte die 24-Stunden abfragen so gestalten, dass ich auch nur bestimmte Zeiten dazwischen abfragen kann.

    Eigentlich sollte Beispiel 2 korrekt laufen, weigert sich aber. Wo liegt mein Denkfehler?

    Vorab schonmal vielen Dank für's Lesen.

    Grüße,
    Stephan

  • #2
    Du solltest es besser umgekehrt machen, d.h.

    Code:
    where ev.date between to_DATE('01.05.2015 00:00:00','dd.mm.yyyy hh24:mi:ss') and to_DATE('01.05.2015 23:59:59','dd.mm.yyyy hh24:mi:ss')
    Die erste Variante funktioniert nur weil deine aktuellen NLS-Settings "zufällig" stimmen.

    Gruss

    Comment


    • #3
      Hallo Wernfried,

      BINGO - ich sagte ja, meine Frage ist beinahe peinlich... Deine Variante funktioniert auf Anhieb.

      Vielen Dank!

      Grüße

      Comment

      Working...
      X