[Oracle] Einfachste Abfragen

DrMueller

Erfahrenes Mitglied
Hallo Leute,
Zuerst mal sorry für die dummen Fragen, aber diese findet man ja bekanntlich am schwersten im Internet.
Was ganz einfaches: Ich habe eine Importschnittstelle und will alle Datensätze zwischen heute und dem letzten Import-Timestamp. Auf einer Website habe ich sowas in der Art gefunden:
SELECT * FROM cheViewDowar WHERE Ereignisdatum <= to_char(11.03.2008, DD.MM.YYYY) And Ereignisdatum >= to_char(01.01.1008, DD.MM.YYYY)

Als einzige Fehlermeldung erhalte ich "Rechte Klammer fehlt", aber ich sehe beim besten WIllen nicht wo diese Klammer fehlt.
 
Das Statement ist in mehrerlei Hinsicht schlecht oder falsch. Gehen wirs Schritt für Schritt durch.

Rein syntaktisch gesehen, fehlen in dem Code die Anführungszeichen für die Datums- und Formatangaben
Code:
SELECT * 
FROM   cheViewDowar 
WHERE  Ereignisdatum <= to_char('11.03.2008', 'DD.MM.YYYY') 
And    Ereignisdatum >= to_char('01.01.1008', 'DD.MM.YYYY');

Als zweites: Gehen wir davon aus, die Spalte "Ereignisdatum" ist auch wirklich als Spalte vom Typ "DATE" gespeichert - was dringend zu empfehlen wäre - dann würde es der Datenbank helfen, auch nach Datumswerten und nicht nach Text zu suchen (TO_CHAR)

Besser wäre also:
Code:
SELECT * 
FROM   cheViewDowar 
WHERE  Ereignisdatum <= TO_DATE('11.03.2008', 'DD.MM.YYYY') 
And    Ereignisdatum >= TO_DATE('01.01.1008', 'DD.MM.YYYY');
 
Zuletzt bearbeitet:
to_char mit einem String + Formatbeschreiber ist syntaktisch falsch. Funktionieren würde das nur mit einer expliziten Konvertierung des Strings in ein Datum, aus dem man dann wieder einen String macht:

SQL:
SQL> select * 
       from dual 
      where sysdate <= to_char('11.03.2008', 'DD.MM.YYYY');
select * from dual where sysdate <= to_char('11.03.2008', 'DD.MM.YYYY')
                                            *
FEHLER in Zeile 1:
ORA-01722: invalid number

SQL> select * 
       from dual 
      where sysdate <= to_char(to_date('12.03.2008'), 'DD.MM.YYYY');

D
-
X

Aber das ist natürlich Unsinn, und Exceptionfault hat natürlich völlig recht, dass man Datumsangaben nur mit Datumsangaben vergleichen sollte.

Gruß

MP
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück