Search code examples
sqlibm-midrangedb2-400

Need this field to be as originally, number; not string


In this query, the field UAFLWD, on the IBM I is defined as numeric 8 0. it is actually a date field, YYYYMMDD. This code below changes the format to STRING, called now FOLLOWUP. Actually I would like this to be NUMBER, because in the reporting tool, i want to include only dates = to the current date and previous. How can i define this FOLLOWUP to be a number?

SELECT                                                                              
  ALL       T01.UAUSRN,                                                             
            SUBSTR(DIGITS(UAFLWD),5,2) CONCAT '/' CONCAT SUBSTR(DIGITS(UAFLWD)      
            ,7,2) CONCAT '/' CONCAT SUBSTR(DIGITS(UAFLWD),3,2) AS FOLLOWUP,         
            (T01.UAENT#), T01.UASFX#, T02.ADENTN, T01.UANOTT, T01.UANOTL,  T02.ADLNM, T02.ADFNM,         
            T01.UAFLWD                                                              
  FROM      ASTDTA.NOTEHDUA T01 INNER JOIN                                            
            ASTDTA.ADRESsad T02                                                       
  ON        UAENT# = ADENT#                                                         
    AND     UASFX# = ADSFX#                                                         
  WHERE     UAFLWD BETWEEN 20000101 AND 20991231                                    
    AND     UAPRGD < 1                                                              
    AND     UANOTT = 'E'                                                            
  ORDER BY  001 ASC, 008 ASC                                   

Solution

  • What exactly are you looking for? According to your question it's already numeric so just select it without any conversion:

    SELECT
      ALL       T01.UAUSRN, UAFLWD AS FOLLOWUP,
                (T01.UAENT#), T01.UASFX#, T02.ADENTN, T01.UANOTT, T01.UANOTL,  T02.ADLNM, T02.ADFNM,         
                T01.UAFLWD                                                              
      FROM      ASTDTA.NOTEHDUA T01 INNER JOIN                                            
                ASTDTA.ADRESsad T02                                                       
      ON        UAENT# = ADENT#                                                         
        AND     UASFX# = ADSFX#                                                         
      WHERE     UAFLWD BETWEEN 20000101 AND 20991231                                    
        AND     UAPRGD < 1                                                              
        AND     UANOTT = 'E'                                                            
      ORDER BY  001 ASC, 008 ASC                                   
    

    EDIT I just noticed that UAFLWD is already included in the selection list without conversion in the sample SQL.