[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    327

    SQL Probleme numerischen Werten - decimal

    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

  2. #2
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Hallo Klaus,

    anstelle VHREGD direkt zu verwenden könntest Du DIGITS(VHREGD) nehmen

    also
    SELECT digits(VHREGD), decimal(substr(digits(VHREGD), 5, 4)),
    decimal(substr(digits(VHREGD), 3, 2)), decimal(substr(digits(VHREGD), 1, 2)) FROM vphisp WHERE vhdisc = '12'

    Gruß,
    Christian

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    327
    Wahnsinn, ihr seit wie immer TOP. Vielen Dank Christian.
    Manchmal kann es so einfach sein.

Similar Threads

  1. DATE-Wert aus vier INT Werten JH, JJ, MM, TT
    By scireum_mha in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 10-05-14, 06:39
  2. SQL Convert Date to Decimal
    By TheDevil in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 27-03-14, 13:34
  3. SQL CAST als Datum bei fehlerhaften Werten
    By Moonwalker in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 15-12-13, 15:23
  4. Antworten: 5
    Letzter Beitrag: 23-04-03, 13:48
  5. Datei mit Hex-Werten in RPG verarbeiten
    By DiBagger in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-09-02, 12:41

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •