Cómo crear una expresión relativa a la fecha

En esta sección:

Una expresión de fecha realiza un cálculo numérico con fechas.

Una expresión de fecha genera una fecha, un componente de fecha o un número entero que representa el número de días, meses, trimestres o años entre dos fechas. Puede escribir una expresión de fecha directamente que conste de:


Principio de página

x
Formatos para valores de fecha

Referencia:

Puede trabajar con fechas en una de estas dos maneras:

Puede convertir una fecha con un formato en una fecha con otro formato con sólo asignar un formato al otro. Por ejemplo, las siguientes asignaciones toman una fecha almacenada como campo alfanumérico y formateada con opciones de edición de fecha y la convierten en una fecha almacenada como un campo de fecha temporal:

COMPUTE ALPHADATE/A6MDY = '120599' ;
        REALDATE/MDY = ALPHADATE;


x
Referencia: Fechas base para formatos de fecha

La siguiente tabla muestra la fecha base para cada formato de fecha admitido:

Formato

Fecha base

YMD, YYMD, MDYY, DMYY, MDY, and DMY

1900/12/31

YM, YYM, MYY, and MY

1901/01 en z/OS

1900/12/31 en Windows y UNIX

YQ, YYQ, QYY, and QY

1901 Q1

JUL and YYJUL

1900/365

D
M
Y, YY
Q
W

No hay fecha base para estos formatos. Se trata sólo de números, no de fechas.

Fíjese que la fecha base que se utiliza para las funciones DA y DT es el 31 de diciembre de 1899. Para detalles acerca de las funciones de fecha, consulte el manual Cómo usar las funciones .



x
Referencia: Impacto de los formatos de fecha en el almacenamiento y la visualización

La siguiente tabla explica cómo el formato de campo afecta el almacenamiento y la visualización:

 

Formato de fecha (por ejemplo: MDYY)

Formato de número entero, empaquetado, decimal o alfanumérico (por ejemplo: A8MDYY)

Valor

Almacenado

Mostrado

Almacenado

Mostrado

28 de febrero de 1999

35853

02/28/1999

02281999

02/28/1999

1 de marzo de 1999

35854

03/01/1999

03011999

03/01/1999



x
Cómo realizar cálculos con fechas

El formato de un campo determina cómo puede utilizarlo en una expresión de fecha. Los cálculos con fechas en formato de fecha puede incorporar operadores numéricos así como funciones numéricas. Los cálculos de fechas en formato de número entero, empaquetado, decimal o alfanumérico requieren el uso de funciones de fecha. Los operadores numéricos generan un mensaje de error o un resultado incorrecto.

Su software incluye un completo conjunto de funciones que permiten la manipulación de fechas en formato de número entero, de decimal empaquetado y alfanumérico. Para más detalles acerca de las funciones de fecha, consulte el manual Cómo usar las funciones .



Ejemplo: Cómo calcular fechas

Imaginemos que su empresa mantiene una base de datos SHIPPING. El siguiente ejemplo calcula cuántos días toma el departamento de embarque para completar una orden, restándole la fecha en que se ordena un artículo (ORDER_DATE) a la fecha en que se embarca (SHIPDATE):

COMPUTE TURNAROUND/I4 = SHIP_DATE - ORDER_DATE;

En el caso de un artículo ordenado el 28 de febrero de 1999 y embarcado el 1 de marzo, la diferencia es de un día. Sin embargo, si los campos SHIP_DATE y ORDER_DATE tienen formato de número entero, el resultado del cálculo (730000) es incorrecto, pues no se puede utilizar un operador numérico menos (-) con ese formato.

La siguiente tabla muestra cómo el formato de campo afecta el resultado:

 

Valor en formato de fecha

Valor en formato de número entero

SHIP_DATE = March 1, 1999

35854

03011999

ORDER_DATE = February 28, 1999

35853

02281999

TURNAROUND

1

730000

Para obtener el resultado correcto con campos en formato de número entero, empaquetado, decimal o alfanumérico, utilice la función de fecha MDY, que genera la diferencia entre dos fechas en formato mes-día-año. Puede calcular TURNAROUND con la función MDY de la manera siguiente:

COMPUTE TURNAROUND/I4 = MDY(ORDER_DATE, SHIP_DATE);


x
Fechas de dos siglos diferentes con DEFINE y COMPUTE

En un comando DEFINE o COMPUTE o en un atributo DEFINE en un archivo máster, puede usar una expresión que implemente la técnica de la ventana corrediza para procesar fechas de dos siglos diferentes. Los parámetros DEFCENT y YRTHRESH proporcionan un medio de interpretar el siglo si no se ofrecen los primeros dos dígitos del año en otra parte. Si se proveen los primeros dos dígitos, se aceptan.

Para obtener información detallada acerca de la técnica de la ventana corrediza y el uso de expresiones en esta técnica, vaya a Cómo trabajar con fechas de dos siglos diferentes en la sección de Documentación adicional del CD de manuales de WebFOCUS.


Principio de página

x
Cómo seleccionar un formato de campo de devolución

Una expresión de fecha siempre genera un número. Ese número puede representar una fecha o un número de días, meses, trimestres o años entre dos fechas. Si utiliza una expresión de fecha para asignar un valor a un campo, el formato seleccionado para el campo determina cómo se generan los resultados.



Ejemplo: Seleccionar el formato de un campo devuelto

Considere los comandos siguientes, como si SHIP_DATE y ORDER_DATE fuesen campo de fecha formateada. El primer comando calcula los días que tarda el departamento de envíos en completar un pedido restando la fecha en la que se hizo el pedido, ORDER_DATE, de la fecha en la que se envió el pedido, SHIP_DATE. El segundo comando calcula una fecha de envío añadiendo cinco días a la fecha de envío del pedido.

COMPUTE TURNAROUND/I4 = SHIP_DATE - ORDER_DATE;
COMPUTE DELIVERY/MDY = SHIP_DATE + 5;

En el primer comando, la expresión de fecha devuelve el número de días que se tarda en completar un pedido, por lo que el campo asociado, TURNAROUND, debe estar en formato de número entero. En el segundo comando, la expresión de fecha devuelve la fecha en que se se entregará el artículo, por lo que el campo asociado, DELIVERY, debe estar en formato de fecha.


Principio de página

x
Cómo usar una constante de fecha en una expresión

Al usar una constante de fecha en un cálculo, con un campo en formato de fecha, debe ponerla entre comillas simples, de lo contrario, se interpretará como el número de días entre la constante y la fecha base (el 31 de diciembre de 1900 o el 1 de enero de 1901). Por ejemplo, si 022899 no estuviera entre comillas, el valor se interpretaría como el día 22,899 después del 31 de diciembre de 1900, no como el 28 de febrero de 1999.



Ejemplo: Como iniciar un campo con una constante de fecha

El siguiente comando inicializa START_DATE con la constante de fecha 02/28/99:

COMPUTE START_DATE/MDY = '022899';

El siguiente comando calcula los días que han pasado desde el 1 de enero de 1999.

COMPUTE YEAR_TO_DATE/I4 = CURR_DATE - 'JAN 1 1999' ;

Principio de página

x
Cómo extraer un componente de fecha

Los componentes de fecha incluyen días, meses, trimestres y años. Puede escribir una expresión que extraiga un componente desde un campo en formato de fecha. Sin embargo, no puede escribir una expresión que extraiga días, meses o trimestres de una fecha que no tenga estos componentes. Por ejemplo, no puede extraer un mes de una fecha en formato YY, que representa sólo los años.



Ejemplo: Cómo extraer el componente del mes de un fecha

El siguiente ejemplo extrae el componente de mes de SHIP_DATE, que tiene el formato MDYY:

COMPUTE SHIP_MONTH/M = SHIP_DATE;

Si SHIP_DATE tiene el valor 1 de marzo de 1999, la expresión de arriba genera el valor 03 para SHIP_MONTH.

Un cálculo en un componente de fecha produce automáticamente un valor válido para el componente deseado. Por ejemplo, si el valor actual de SHIP_MONTH es 03, la siguiente expresión genera correctamente el valor 06:

COMPUTE ADD_THREE/M = SHIPMONTH + 3;

Si el resultado de la suma de los meses es mayor de 12, se ajustan los meses correctamente (por ejemplo, 11 + 3 es 2, no 14).


Principio de página

x
Cómo combinar campos con formatos diferentes en una expresión

Cuando utilice campos con formatos de fecha, puede combinar campos con un orden de componentes diferente en la misma expresión. Además, puede asignar el resultado de una expresión de fecha a un campo con un orden de componentes diferente de los campos en la expresión.

Sin embargo, no puede escribir una expresión que combine fechas en formato de fecha con fechas en formato de número entero, empaquetado, decimal o de caractéres.



Ejemplo: Cómo combinar campos con formatos YYMD y MDY

Examine los dos campos DATE_PAID y DUE_DATE. DATE_PAID tiene el formato YYMD, mientras que DUE_DATE tiene el formato MDY. Puede combinar estos dos campos en una expresión para calcular el número de días de atraso de un pago:

COMPUTE DAYS_LATE/I4 = DATE_PAID - DUE_DATE;


Ejemplo: Cómo asignar un orden de componentes diferente a un campo de devolución

Examine el campo DATE_SOLD. Este campo contiene la fecha en que se vende un artículo, en formato YYMD. La siguiente expresión le suma siete días a DATE_SOLD para determinar la última fecha en que el artículo se puede devolver. Luego asigna el resultado a un campo con formato DMY:

COMPUTE RETURN_BY/DMY = DATE_SOLD + 7;

WebFOCUS