Oracle SQL Datum wird in der Abfrage nicht ausgeführt

adras4810

Lt. Junior Grade
Registriert
Okt. 2009
Beiträge
495
Hallo zusammen,
ich benötige Hilfe bei folgender Abfrage:

1662035405713.png


Bei diesem simplen Select Befehl möchte ich die Abfrage auf die Spalte "Date" beziehen.

Wenn ich aber nun die Abfrage wie folgt verwende:

select * from TALEND_ADM.ODS_RATE_CARD_INVOICE where date ='17.01.22 00:00:00,000000000'

Erhalte ich folgende Fehlermeldung:
1662036450225.png


Ich möchte die Abfrage auch soweit erweitern das er mir alle Ergebnisse anzeigt die in der Spalte Date

01.04.22 -30.04.22 anzeigt (Between Abfrage)
 
welches datumsformat soll das genau sein? Ist das hinter dem Komma packed numeric? Wirkt nicht wie etwas, was in production genutzt wird
übliche formate sehen so aus: https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm
das hinten schaut nach einer numerischen rep. aus, aber warum mischen?
was soll nach dem Komma repräsentiert werden?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Asghan
Das sieht mir verdächtig nach Hausaufgabe aus?
(was mir sofort auffällt: Das Semikolon fehlt am Ende)
 
  • Gefällt mir
Reaktionen: madmax2010
Die erste Antwort der Google Suche KLICK und für die Frage nach dem between KLICK

Es sollte mit TO_DATE gearbeitet werden, genaueres zu den Literalen und deren Verwendung findet man in den Docs von Oracle.
 
Zuletzt bearbeitet: (oracle docs eingefügt)
  • Gefällt mir
Reaktionen: Asghan
Danke für die schnellen Antworten, das mit dem date_to habe ich soweit auch ergooglet allerdings verstehe ich die Umsetzung noch nicht, ich schaue mir die Docks an.
 
Versuch mal:

SQL:
WHERE DATE BETWEEN TO_DATE('01.04.2022', 'DD.MM.YYYY') AND TO_DATE('30.04.2022', 'DD.MM.YYYY')
 
Habe ich auch versucht, denke das Problem sind die ,000000000 , habe jetzt auch nichts finden können wie man diese deklariert.

and date = to_date ('06.01.22 10:16:57','dd.mm.yy hh24:mi:ss')

Hat auch nicht funktioniert wenn ich die ,00000000 weg lasse.
 
Ist denn das Datenbank-Feld auch als DATE-Wert hinterlegt?
Normal sollte die Abfrage die Nachkommastellen einfach ignorieren.

Kannst auch noch mal probieren:
SQL:
WHERE TO_DATE(DATE, 'DD.MM.YYYY HH24:MI:SS') = TO_DATE('01.04.2022 10:16:57', 'DD.MM.YYYY HH24:MI:SS')

Aber da es den Eintrag 10:16:57 nicht gibt, laut deinem Beispiel, sollte da ja nichts zurück kommen.
 
Dann brauchst du vermutlich TO_TIMESTAMP

SQL:
WHERE DATE = TO_TIMESTAMP('01.04.2022 10:16:57.000000000', 'DD.MM.YYYYY HH24:MI:SS.FF')
 
Das ist das Format Timestamp (Zeitstempel), probiere mal:

SQL:
select * from TALEND_ADM.ODS_RATE_CARD_INVOICE where date = TO_TIMESTAMP('2022-01-17', 'YYYY-MM-DD')
 
Das Ticket kann zu.
Mit folgender ABfrage geht es:

SELECT *FROM talend_adm.ods_rate_card_invoice
WHERE talend_adm.ods_rate_card_invoice."Date" BETWEEN TO_DATE('01.04.2022', 'DD.MM.YYYY') AND TO_DATE('30.04.2022', 'DD.MM.YYYY')

Lt. DB Admin hätte die Spalte " Date " nicht Date heißen dürfen... ein hoch auf den Ersteller der Tabelle :)


Danke euch für eure Unterstützung! Habe dadurch nun viel gelernt!
 
Ich empfehle Dir das trotzdem nochmal anzusehen, Du verwendest TO_DATE für den Vergleich auf Timestamp obwohl es TO_TIMESTAMP gibt. Auf stackoverflow gab es diesbezüglich Einwände.
 
SELECT *
FROM talend_adm.ods_rate_card_invoice
WHERE talend_adm.ods_rate_card_invoice."Date" BETWEEN to_timestamp('01.04.2022', 'DD.MM.YYYY') AND to_timestamp('30.04.2022', 'DD.MM.YYYY')

Mit TO_timestamp geht es auch.
 
  • Gefällt mir
Reaktionen: Bemme90
Zurück
Oben