Buenos días,
yo aportaría alguna técnica más que podría ser interesante:
1. si los campos de fecha son numéricos o alfabéticos, la solución de Jose
Pozzo es la buena, pero si ya están en un formato reconocible (p.e.
YYYYMMDD) no es necesario reconvertirlo:
DATE(TO_DATE(DIGITS(RCFECH), 'YYYYMMDD'))
2. utilizar la cláusula LATERAL para realizar cálculos y aprovecharlos en
cualquier parte del SELECT:
SELECT
...
FECH, FEVE, FEC1, DAYS(FECH) - DAYS(FEVE),
...
FROM
...
LEFT JOIN
...
CROSS JOIN LATERAL (
VALUES (
DATE(TO_DATE(DIGITS(RCFECH), 'YYYYMMDD')),
DATE(TO_DATE(DIGITS(RCFEVE), 'YYYYMMDD')),
CASE RCFEC1 WHEN 0 THEN NULL ELSE DATE(TO_DATE(DIGITS(RCFEC1),
'YYYYMMDD')) END -- Una fecha no puede ser cero
)
) AS FECHAS (FECH, FEVE, FEC1) -- Utilizar nombres más significativos
WHERE
...
FEC1 IS NOT NULL
..
Esta es una técnica muy útil cuando los cálculos se tienen que repetir en
varias cláusulas del SELECT.
Saludos,
Javier
El vie, 18 ago 2023 a las 22:49, <[email protected]> escribió:
> Buen día
> Suponiendo que RCFECH y RCFECH2 son un campo numérico de 8 que tienen
> fechas en formato DdMmYyyy.
> Hallamos la diferencia entre dos fechas retornando en días.
> SELECT
> DAYS(TO_DATE(DIGITS(RCFECH),'DDMMYYYY)) -
> DAYS(TO_DATE(DIGITS(RCFECH2),'DDMMYYYY))
> FROM SYSIBM.SYSDUMMY1
>
>
> El vie, 18 de ago de 2023, 13:57, Nildo Talavera Jhonson <
> [email protected]> escribió:
>
>> Buenas tardes
>>
>>
>>
>> Tengo el siguiente query, deseo sacar los días de diferencia que hay
>> entre los campos fecha:
>>
>>
>>
>> Select RCEJER, RCPERI, RCRUC, RCPROV, RCTDOC, RCNDOC, RCARTI, RCMONE,
>> RCTCAM, RCPVTA,
>>
>> SubStr(Digits(RCFECH),7,2) ConCat '/' ConCat
>> SubStr(Digits(RCFECH),5,2) Concat '/' Concat SubStr(Digits(RCFECH),1,4) ,
>>
>> SubStr(Digits(RCFEVE),7,2) ConCat '/' ConCat
>> SubStr(Digits(RCFEVE),5,2) Concat '/' Concat SubStr(Digits(RCFEVE),1,4) ,
>>
>> Case RCFEC1 When 0 Then '0' Else SubStr(RCFEC1,7,2)
>> ConCat '/' ConCat SubStr(RCFEC1,5,2) ConCat '/' ConCat SubStr(RCFEC1,1,4)
>> End
>>
>> From speed400at.tregc
>>
>> Left Outer Join Speed400AT.TCTXP
>>
>> On RCRCXP = XPRCXP
>>
>> Where rcejer = 2023 And RCPERI >= 6 And RCCPRO In (
>> Select MHREF1 FROM SPEED400AT.TMOVH Where MHCMOV = 'I' AND MHTMOV = '01' ) ;
>>
>>
>>
>> DIAS DE VENCIMIENTO1 = RCFEVE – RCFECH (MUESTRA POR DIFERENCIA LOS DIAS
>> DE VENCIMIENTO ACORDADOS )
>>
>> NUEVA FECHA DE VENCIMIENTO REAL = RCFEC1 + ( RCFEVE – RCFECH ) – CALCULA
>> LA NUEVA FECHA DE VENCIMIENTO REAL
>>
>>
>>
>> RCFECH = EMISION
>>
>> RCFEV = VENCIMIENTO ACORDADO
>>
>> RCFEC1 = RECEPCION REAL DEL DOCUMENTO
>>
>>
>>
>> *Muchas Gracias *
>>
>>
>>
>> *Nildo Talavera *
>> ____________________________________________________
>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>> Forum.Help400 � Publicaciones Help400, S.L.
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 � Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 � Publicaciones Help400, S.L.