Funciones DA: Cómo convertir una fecha legacy en un número entero

Cómo:

Idiomas disponibles: informes, Maintain

Las funciones DA convierten la fecha legacy al número de días que hay entre ella y una fecha base (Diciembre 31, 1899). Al convertir una fecha al número de días, puede añadir o restar fechas y calcular intervalos entre las mismas, o añadir o restar números para obtener nuevas fechas.

Puede reconvertir el resultado en una fecha mediante las funciones DT, descritas en Funciones DT: Cómo convertir un número entero en una fecha.

Existen seis funciones DA y cada una acepta fechas con un formato diferente.


Principio de página

x
Sintaxis: Cómo Convertir una fecha en un número entero
						function(indate, output)

donde:

function

Es uno de los siguientes:

DADMY convierte fechas en formato día-mes-año.

DADYM convierte fechas en formato día-año-mes.

DAMDY convierte fechas en formato mes-día-año.

DADMYD convierte fechas en formato mes-año-día.

DAYDM convierte fechas en formato año-día-mes.

DAYMD convierte fechas en formato año-mes-día.

indate

I6xxx o P6xxx, donde xxx corresponde a la función DAxxx que está utilizando.

Es la fecha legacy que se va a convertir o el nombre de un campo que contenga la fecha. La fecha se trunca en un número entero antes de la conversión. Si indate es un literal numérico, sólo tiene que introducir los dos últimos dígitos del año; la función presupone el componente de siglo. Si la fecha no es válida, la función devuelve un 0.

output

Número entero

Es el nombre del campo que contiene el resultado, o el formato del valor de salida puesto entre comillas solas. El formato de la fecha devuelta depende de la función.



Ejemplo: Cómo convertir fechas y calcular la diferencia entre ellas

DAYMD convierte los campos DAT_INC y HIRE_DATE al número de días transcurridos desde el 31 de diciembre de 1899 y se resta el número inferior del superior:

TABLE FILE EMPLOYEE
PRINT DAT_INC AS 'RAISE DATE' AND COMPUTE
DAYS_HIRED/I8 = DAYMD(DAT_INC, 'I8') - DAYMD(HIRE_DATE, 'I8');
BY LAST_NAME BY FIRST_NAME
IF DAYS_HIRED NE 0
WHERE DEPARTMENT EQ 'PRODUCTION';
END

La salida es:

LAST_NAME     FIRST_NAME  RAISE DATE  DAYS_HIRED
---------     ----------  ----------  ----------
IRVING        JOAN          82/05/14         130
MCKNIGHT      ROGER         82/05/14         101
SMITH         RICHARD       82/05/14         130
STEVENS       ALFRED        82/01/01         578
                            81/01/01         213

WebFOCUS