ora-01841:full year must be between -4713 and +9999 and not be 0

Denis

Benutzer
Beiträge
6
Hallo,
Access brint mir beim Ausführen der verknüpften Oracle View die Fehlermeldung ORA-01841.
Die Ausführung des Views auf der Oracle DB funktioniert problemlos. Vermute das Problem hier: to_char(SYSDATE,'YYYY').


Auszug aus der View:
where (n.NETZ_NR,n.GUELTIG_BIS) in (select NETZ_NR,max(GUELTIG_BIS)
from XYZ
where GUELTIG_SEIT <= to_date('31.12.' || to_char(SYSDATE,'YYYY') ,'DD.MM.YYYY')
group by NETZ_NR)
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.409
Ein select to_date('31.12.' || to_char(SYSDATE,'YYYY') ,'DD.MM.YYYY') liefert dir einen gültigen Datumswert? Was liefert select SYSDATE?
 

Denis

Benutzer
Beiträge
6
select to_date('31.12.' || to_char(SYSDATE,'YYYY') ,'DD.MM.YYYY') from dual = 31.12.2013

Select SYSDATE from DUAL = 14.01.2013
 

ukulele

Datenbank-Guru
Beiträge
4.409
Hm, du könntest nochmal in CHAR umwandeln um zu sehen ob er die Jahreszahl aus dem DATE Format auch extrahieren kann:
select to_char(to_date('31.12.' || to_char(SYSDATE,'YYYY') ,'DD.MM.YYYY'),'YYYY') from DUAL
was aber gehen sollte.

Es scheint ne Menge solcher komischen Erscheinungen mit dieser Fehlermeldung in Oracle zu geben, so ganz werde ich daraus nicht schlau sry.
 

ukulele

Datenbank-Guru
Beiträge
4.409
Vieleicht solltest du die GUELTIG_SEIT Spalte mal untersuchen. Gibt es dort NULL Werte und was ist der höchste / niedrigste Jahreswert?
 

Denis

Benutzer
Beiträge
6
Fehler gefunden. Habe Äpfel mit Birnen verglichen :)

Vorher: where GUELTIG_SEIT <= to_date('31.12.' || to_char(SYSDATE,'YYYY') ,'DD.MM.YYYY')
Nachher: where to_char(gueltig_seit,'DD.MM.YYYY') <= '31.12.' || to_char(SYSDATE,'YYYY')

Vorher habe ich Datum mit String verglichen, jetzt vergleiche String mit String. Funktioniert.

Danke für Deine Mithilfe.
 

ukulele

Datenbank-Guru
Beiträge
4.409
Ist GUELTIG_SEIT ein String? Eigentlich hast du ja Datum mit Datum verglichen und so sollte es auch sein. Wie willst du bei einer kleiner als Operation mit einem String verfahren? Wenn überhaupt dann Zahl.
 

Denis

Benutzer
Beiträge
6
Stimmt natürlich. Habe nun wieder auf >where gueltig_seit <= to_date('31.12.' || to_char(SYSDATE,'YYYY'),'DD.MM.YYYY'< umgestellt, so wie es vorher war und mir auch logisch erscheint und siehe da Access funktioniert wieder und Oracle sowieso. Keine Ahnung wieso ?
 
Werbung:
Oben