[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    393

    mit sql falsche daten lesen

    Moin zusammen,
    Wir haben in einer Datei das Datum in 3 Feldern JJJJ MM TT.
    in den alt Daten gibt es ungülltig Werte wie 31.06. oder 31.04. oder 95.02. ...

    Wie müsste ein sql aussehen, wenn ich nur die falschen haben will?
    Ginge das?
    (Bei fast 98 Mio. Datensätzen sicher ein verständlicher Wunsch)

    select * from Datei where date(digits(jjjj) concat '-' concat digits(mm) concat'-' concat digits(tt)) is null

    ist abgebrochem mit Auswahlfehler für Feld *N

    Danke Euch
    der ILEMax

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Eben ohne Date(), da der Cast bei ungültigen Daten auf die Nase fällt und aufhört.
    Du musst eine Kalendertabelle anlegen, die halt nur die gültigen Werte enthält sowie die 3-Teilung der Felder, Also Date, JJJJ, MM, DD.
    Dann machst du einen Index über JJJJ, MM, DD.
    Anschliessend machst du einen
    select * from a
    exception join from kalender using (jjjj, mm, dd)

    Exception entspricht dem "where not exists".

    Using = Kurzform des join on, wenn die Namen auf beiden Seiten identisch sind.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... sieh dir mal iDate auf think400 an. Das ist eine SQL function zur Konvertierung von allen möglichen Huddeldatümmern, das bei Dummfug null zurückgibt, was man dann abfragen kann, ohne dass es einen Abbruch gibt.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Du kannst auch die folgende Funktion verwenden.
    CvtYYYY_MM_DD2Date
    Einmal erstellt kannst Du Sie in den WHERE-Bestimmungen einsetzen und explizit auf das Datum 8888-12-31 abfragen.
    Die Funktion kann natürlich nach Bedarf auch modifiziert und auch anderweitig verwendet werden.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Daten einer CCSID 1208 Datei lesen
    By hteufl in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 20-03-20, 12:09
  2. Daten aus QAOKP09A lesen
    By hteufl in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 11-04-17, 16:29
  3. Antworten: 11
    Letzter Beitrag: 11-07-14, 10:32
  4. Antworten: 3
    Letzter Beitrag: 25-02-02, 22:27
  5. Falsche Umlaute AS/400 Daten in Delphi-PGM
    By Joker in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 25-10-01, 15:02

Berechtigungen

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