Reputation: 195
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
Upvotes: 0
Views: 73
Reputation: 41148
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.
Upvotes: 1
Reputation: 1269445
The first thing that comes to mind is to use cast()
:
SELECT
ALL T01.UAUSRN,
CAST(SUBSTR(DIGITS(UAFLWD),5,2) CONCAT SUBSTR(DIGITS(UAFLWD),7,2) CONCAT
SUBSTR(DIGITS(UAFLWD),3,2) AS INTEGER
) AS FOLLOWUP,
(T01.UAENT#), T01.UASFX#, T02.ADENTN, T01.UANOTT, T01.UANOTL, T02.ADLNM, T02.ADFNM,
T01.UAFLWD
Does this work to solve your problem?
Upvotes: 0