[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2004
    Beiträge
    13

    Angry SQL CAST als Datum bei fehlerhaften Werten

    Hallo zusammen,

    ich habe eine Frage, bei der ihr mir vielleicht helfen könnt.

    Ich muss ein Feld aus einer Tabelle als Datum casten. Das Feld in der Datei ist alphanumerisch.

    z.B. SELECT CAST(DATUM AS date) FROM TABLE1

    Problem ist nur, dass sich unter den Millionen von Datensätzen auch fehlerhaften Daten befinden, die nicht gecastet werden können. Stattdessen steht dafür '++++++++++'.
    Gibt es eine Möglichkeit, die Datensätze, die nicht gecastet werden können, einfach auszuschließen? Die Plus-Zeichen sind für ich im Where-Statement nicht greifbar, auch per Hex leider nicht.

    Ich habe schon versucht die fehlerhaften Daten per Substring auf gültige Werte zu testen, aber keine Chance. Es gibt z.B. solche Werte: 01.01.2, 01.09.2RZA, RZA01.02.2

    Vielen Dank und viele Grüße

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Schreib' dir eine kleine SQL-Funktion, die das Datum konvertiert und bei fehlerhaften Datensätzen einen Unterlassungswert (z.B. 0001-01-01 oder 9999-12-31) ausgibt. Diese Funktion verwendest Du dann anstatt das Datum mit CAST zu konvertieren. Anschließend kannst Du die Unterlassungswerte rausfiltern.
    Etwa so:
    Code:
    Create Function YourSchema/CvtChar2Date (ParDate VarChar(10)) 
           Returns DATE
           Language SQL
           Not Deterministic
           Contains SQL
           Set Option DBGVIEW = *SOURCE 
    
    BEGIN
      Declare Continue Handler For SQLSTATE '22007'
              Return Date('9999-12-31'); 
      Return Cast(ParDate as Date);
    END  ;
    Aufruf:
    Code:
    Select CvtChar2Date(YourDatum)
    From yourTable;
    Birgitta
    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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ein "return NULL" im Fehlerfall wäre ggf. sinnvoller.
    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

Similar Threads

  1. Artikel: E-Mail-Fenster von 5250-Oberfläche öffnen mit vorgegebenen Werten
    By NEWSolutions Redaktion in forum NEWSolutions artikel
    Antworten: 0
    Letzter Beitrag: 13-11-13, 03:57
  2. Antworten: 5
    Letzter Beitrag: 23-04-03, 13:48
  3. Datei mit Hex-Werten in RPG verarbeiten
    By DiBagger in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-09-02, 12:41
  4. Datum + 10 Tage in RPG
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-08-01, 14:47
  5. CAST von Numeric nach Date via SQL
    By KB in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-05-01, 10:43

Berechtigungen

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