• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Find Database Records with Invalid Dates

    April 28, 2004 Hey, Ted

    We store dates in YYYYMMDD format in packed decimal fields in our database. This served us well when we wrote all our applications in green-screen RPG. Now that we’re using other technologies, invalid dates (like all zeros, all nines, or April 31) cause us problems. Is there a way in SQL to test the validity of a date? Something similar to RPG’s TEST op code with the D extender would be great.

    –Kenny

    I don’t know of an SQL function that will tell you whether a numeric field contains a valid date, so I wrote one.

    Use the method of your choice (interactive SQL, iSeries Navigator, Howard Arner’s SQLThing) to run the following SQL code on your iSeries machine.

    create function IsValidDate (parmDate decimal(8))
     returns integer                                 
     language sql                                    
     deterministic                                   
     contains sql                                    
     not fenced                                      
     called on null input                            
     no external action                              
     set option datfmt = *iso                             
     begin                                                
        declare chDate8 char (8);                          
        declare chDate10 char (10);                        
        declare dDate date;                                
        declare bValid integer;                            
        declare continue handler for sqlexception          
           set bValid = -1;                                
        set bValid = 0;                                    
        set chDate8 = digits(parmDate);                    
        set chDate10 = substr(chdate8,1,4) || '-' ||       
                       substr(chdate8,5,2) || '-' ||       
                       substr(chdate8,7,2);                
        set dDate = chDate10;                              
        return bValid;                                     
     end                                                  
     

    This function returns zero if the date is valid and negative one if the date is invalid.

    The following example uses the IsValidDate function to find records with an invalid JEDATE.

    SELECT *
      FROM gljnl
      WHERE IsValidDate(jedate) < 0                                
    

    –Ted

    Share this:

    • Share on Reddit (Opens in new window) Reddit
    • Share on Facebook (Opens in new window) Facebook
    • Share on LinkedIn (Opens in new window) LinkedIn
    • Share on X (Opens in new window) X
    • Email a link to a friend (Opens in new window) Email

    Tags:

    Sponsored by
    JAMS Software

    One Scheduler. IBM i, Windows, Linux, and More.

    IBM i teams trust JAMS to schedule and orchestrate jobs across every platform in their environment. Centralized visibility, cross-platform dependency management, and alerts that reach the right person before the business feels it.

    Fewer than 5% of IBM i shops run IBM i only. The rest are managing cross-platform dependencies — often without a clear picture of how they connect. JAMS draws that map, enforces those dependencies automatically, and gives your team a single place to monitor, manage, and recover when something goes wrong.

    If you are running hundreds of CL scripts and custom RPG processes, bring them as-is. JAMS runs them exactly as they do today — except now they are visible, monitored, and part of an orchestrated workflow instead of scattered across folders only one person knows about.

    No consumption-based pricing. No surprise bills when your workload spikes. You pay based on how many machines JAMS talks to — that’s it.

    Learn More → https://jamsscheduler.com/lp/ibm-i

    Share this:

    • Share on Reddit (Opens in new window) Reddit
    • Share on Facebook (Opens in new window) Facebook
    • Share on LinkedIn (Opens in new window) LinkedIn
    • Share on X (Opens in new window) X
    • Email a link to a friend (Opens in new window) Email

    Keep Your Users Informed OS/400 Alert: Googlize Your Enterprise

    Leave a ReplyCancel reply

Volume 4, Number 14 -- April 28, 2004
THIS ISSUE
SPONSORED BY:

Advanced Systems Concepts
COMMON
Guild Companies
WorksRight Sofware
Profound Logic Software

Table of Contents

  • Cross-Reference Your Procedures
  • Using RPG As Your ASP Language, Part 1
  • Keep Your Users Informed
  • Find Database Records with Invalid Dates
  • OS/400 Alert: Googlize Your Enterprise

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • The Power11 IBM i P05 Entry Machine Finally Arrives
  • Big Blue Finally Unveils First IBM i Tech Refreshes Of 2026
  • Guru: Analyzing User Session Statistics, Part 1
  • Relion Solutions Launches With A Focus On Customer Service
  • IBM i PTF Guide, Volume 28, Numbers 23 And 24
  • Big Blue Ships Bob 2.0 And Premium Package For IBM i
  • Your IBM i Jobs Don’t Live On An Island Anymore
  • FalconStor Creates Cloud Clean Room To Prove Backup Recoveries Work
  • Talking Git On IBM i With A Bunch Of IBM i Gits
  • IBM i PTF Guide, Volume 28, Number 22

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle