En esta sección: |
Durante el uso de las funciones de fechas estándar, es importante que conozca los ajustes y propiedades que afectan a su comportamiento, además de los formatos aceptables y el modo en que éstos se proporcionan.
Puede afectar al comportamiento de las funciones de fechas de las siguientes formas:
Para más información sobre cada función de fechas estándar, consulte:
DATEADD: Cómo añadir o restar una unidad de fecha de una fecha
DATECVT: Cómo convertir el formato de una fecha
DATEDIF: Cómo hallar la diferencia entre dos fechas
DATEMOV: Cómo cambiar la fecha a un punto significativo
DATETRAN: Cómo aplicar un formato internacional a las fechas
DPART: Cómo extraer un componente de una fecha
FIYR: Cómo obtener el año financiero
FIQTR: Cómo obtener el año financiero
FIYYQ: Cómo convertir una fecha de calendario en una fecha financiera
TODAY: Cómo devolver la fecha actual
En esta sección: |
Puede definir los días que son de trabajo y los que no lo son. Los días de trabajo afectan a las funciones DATEADD, DATEDIF y DATEMOV. Identifique los días de trabajo como laborables o festivos.
Tradicionalmente, los días laborables son de lunes a viernes, aunque no todas las empresas siguen esta planificación. Por ejemplo, si su empresa opera los domingos, martes, miércoles, viernes y sábados, puede ajustar las unidades de día laborable para que reflejen su planificación.
SET BUSDAYS = smtwtfs
donde:
Es la lista de días, de siete caracteres que representa su semana laborable. La lista cuenta con una posición para cada día, de domingo a sábado:
Si alguna letra está en una posición incorrecta, o si sustituye una letra por un carácter que no sea un guión bajo, aparece un mensaje de error.
El siguiente código designa los días de trabajo como domingo, martes, miércoles, viernes y sábado:
SET BUSDAYS = S_TW_FS
Puede especificar una lista de fechas designadas como festivas, en su empresa. Estas fechas quedan excluidas del uso de las funciones que realizan cálculos basados en los días de trabajo. Por ejemplo, si el jueves de una semana determinada está designado como festivo, el siguiente día de trabajo posterior al miércoles será el viernes.
Para definir una lista de días festivos, debe:
En Windows y UNIX: El archivo debe ser HDAYxxxx.ERR
En z/OS: El archivo debe ser un miembro de ERRORS, llamado HDAYxxxx.
donde:
Es una cadena de texto de cuatro caracteres.
SET HDAY = xxxx
donde:
Es la parte del nombre del archivo de festivos situada después de HDAY. Esta cadena debe tener cuatro caracteres de longitud.
A continuación, le mostramos el archivo HDAYTEST, que establece los días festivos:
19910325 TEST HOLIDAY 19911225 CHRISTMAS
Esta solicitud emplea HDAYTEST en sus cálculos:
SET BUSDAYS = SMTWTFS SET HDAY = TEST TABLE FILE MOVIES PRINT TITLE RELDATE COMPUTE NEXTDATE/YMD = DATEADD(RELDATE, 'BD', 1); WHERE RELDATE GE '19910101'; END
Cómo: |
Si está usando una función de fechas y horas en Dialogue Manager, que devuelve un formato numérico de números enteros, Dialogue Manager trunca los ceros a la izquierda. Por ejemplo, si una función devuelve el valor 000101 (que indica Enero 1, 2000), Dialogue Manager trunca los ceros a la izquierda, resultando en 101, que es una fecha incorrecta. Para evitar este problema, use el parámetro LEADZERO.
LEADZERO sólo es compatible con expresiones que llamen directamente a una función. Las expresiones que incluyen anidamiento u otras funciones matemáticas, siempre truncan los ceros a la izquierda. Por ejemplo,
-SET &OUT = AYM(&IN, 1, 'I4')/100;
trunca los ceros a la izquierda independientemente de la configuración del parámetro LEADZERO.
SET LEADZERO = {ON|OFF}
donde:
Muestra los ceros a la izquierda, si los hay.
Trunca los ceros a la izquierda. OFF es el valor predeterminado.
La función AYM añade un mes a la fecha de entrada de Diciembre 1999:
-SET &IN = '9912'; -RUN -SET &OUT = AYM(&IN, 1, 'I4'); -TYPE &OUT
Utilizando la propiedad LEADZERO por defecto, el resultado es:
1
Esto hace que la fecha Enero 2000 se represente incorrectamente. Establezca el parámetro LEADZERO del siguiente modo, en la solicitud:
SET LEADZERO = ON -SET &IN = '9912'; -SET &OUT = AYM(&IN, 1, 'I4'); -TYPE &OUT
resulta en:
0001
Esto indica Enero 2000 de un modo correcto.
Information Builders |