Hallo,
heute hat mich ein Anwender aufmerksam gemacht, dass Daten fehlen.
Folgendes SQL läuft hier:
SELECT VHPTNO, VHDLRT, vhregd from vphisp where
decimal(substr(VHREGD, 5, 4)) * 10000+decimal(substr(VHREGD, 3, 2))*
100 + decimal(substr(VHREGD, 1, 2))
BETWEEN 20140701 and 20140801 AND VHCKEY = 'DELETE' AND VHDISC = '12'

Nun habe ich folgendes gefunden. Im Feld VHREGD (Registration date 8,0 gezont Format ddmmccyy) gibt es Probleme, wenn ein einstelliger Tag im Spiel ist. Da kommt das SQL total durcheinander und macht voll Mist.

Beispiel:
SELECT vhregd, decimal(substr(VHREGD, 5, 4)),
decimal(substr(VHREGD, 3, 2)), decimal(substr(VHREGD, 1, 2)) FROM vphisp WHERE vhdisc = '12'

Output:
REGISTERED_DATE DECIMAL DECIMAL DECIMAL
2.012.009 9 12 20 --> falsch
11.112.009 2.009 11 11 --> korrekt
1.102.009 9 2 11 --> falsch
1.042.008 8 42 10 --> falsch

Irgendwie gibt es Probleme mit der führenden Null.
Das Thema ist nur, dass dies irgendwann mal funktioniert hat und nun nicht mehr.

Hat jemand eine Idee und wenn ja, wie muss ich das SQL ändern, so dass ich das Datum in richtiger Reihenfolge als Vergleichswert nutzen kann.
Habe es mit CAST und DIGITS versucht, alles ohne Erfolg.

Danke.
Gruss Klaus