En las secciones siguientes, las referencias a los valores de fecha y hora que tienen representaciones de "series de caracteres" se han cambiado a representaciones de "serie". Ahora DB2 soporta, sólo para bases de datos Unicode, representaciones de "serie gráfica" de los valores de fecha y hora.
Los valores cuyos tipos de datos son DATE, TIME o TIMESTAMP se representan en un formato interno que es transparente para el usuario. Sin embargo, los valores de fecha, hora e indicación de fecha y hora pueden representarse también mediante series. Esto es útil porque no existen constantes o variables cuyos tipos de datos sean DATE, TIME o TIMESTAMP. Para poderlo recuperar, un valor de fecha y hora debe asignarse una variable de tipo serie. Se puede utilizar la función CHAR o la función GRAPHIC (sólo para bases de datos Unicode) para cambiar un valor de fecha y hora por una representación de serie. La representación de serie es normalmente el formato por omisión de los valores de fecha y hora asociados con el código de país/región de la base de datos, a no ser que éstos se alteren temporalmente mediante la especificación de la opción DATETIME cuando se precompila o se enlaza el programa a la base de datos.
Independientemente de su longitud, no se puede utilizar una serie de objeto grande, un valor LONG VARCHAR ni un valor LONG VARGRAPHIC para representar un valor de fecha y hora (SQLSTATE 42884).
Cuando se utiliza una representación de serie válida de un valor de fecha y hora en una operación con un valor de fecha y hora interno, la representación de serie se convierte al formato interno del valor de fecha, hora o indicación de fecha y hora antes de que se realice la operación.
Las series de fecha, hora e indicación de fecha y hora sólo deben contener caracteres y dígitos.
Las definiciones de estos términos se han modificado ligeramente. Las referencias a las representaciones de "serie de caracteres" se han cambiado por representaciones de "serie".
Ahora DATE, TIME y TIMESTAMP pueden difundirse a GRAPHIC y VARGRAPHIC. GRAPHIC y VARGRAPHIC pueden difundirse ahora a DATE, TIME y TIMESTAMP. El soporte de serie gráfica sólo está disponible para bases de datos Unicode.
Ahora existe compatibilidad de tipo de datos para las asignaciones y comparaciones entre las series de gráficas y los valores de DATE, TIME y TIMESTAMP. El soporte de serie gráfica sólo está disponible para bases de datos Unicode.
La norma básica para las asignaciones de fecha y hora consiste en que un valor DATE, TIME o TIMESTAMP sólo se puede asignar a una columna con un tipo de datos que coincida (DATE, TIME o TIMESTAMP) o a una columna de serie o variable de tipo serie de longitud fija o variable. La asignación no debe realizarse a una columna o variable LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB o BLOB.
Cuando se asigne un valor de fecha y hora a una columna de serie o variable de tipo serie, la conversión a una representación de serie es automática. Los ceros iniciales no se omiten de ninguna parte de la fecha, la hora o la indicación de fecha y hora. La longitud necesaria del destino variará, en función del formato de la representación de serie. Si la longitud del destino es mayor que la longitud necesaria y el destino es una serie de longitud fija, dicha longitud se rellenará a la derecha con espacios en blanco. Si la longitud del destino es menor que la longitud necesaria, el resultado dependerá del tipo de valor de fecha y hora implicado y del tipo de destino.
Cuando el destino es una variable de sistema principal, se aplican las normas siguientes:
Si se utilizan formatos ISO o JIS y si la longitud de la variable de sistema principal es inferior a 8 caracteres, la parte de segundos de la hora se omite del resultado y se asigna a la variable de indicador, si se ha proporcionado. Se establece el campo SQLWARN1 de SQLCA para indicar la omisión.
>>-DATE--(--expresión--)---------------------------------------><
Es esquema es SYSIBM.
La función DATE devuelve una fecha a partir de un valor.
El argumento debe ser una fecha, una indicación de fecha y hora, un número positivo menor que o igual a 3.652.059, una representación de serie válida de una fecha o indicación de fecha y hora o una serie de longitud 7 que no sea LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB o BLOB.
Sólo las bases de datos Unicode soportan un argumento que sea una representación de serie gráfica de una fecha o una indicación de fecha y hora.
Si el argumento es una serie de longitud 7, debe representar una fecha válida en el formato aaaannn, donde aaaa son dígitos que indican un año y nnn son dígitos entre 001 y 366, que indican un día de dicho año.
El resultado de la función es una fecha. Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
Las demás normas dependen del tipo de datos del argumento:
Ejemplos:
Suponga que la columna RECEIVED (indicación de fecha y hora) tiene un valor interno equivalente a '1988-12-25-17.12.30.000000'.
DATE(RECEIVED)
DATE('1988-12-25')
DATE('25.12.1988')
DATE(35)
>>-GRAPHIC--(--expresión-gráfica--+-----------+--)------------->< '-,--entero-'
Es esquema es SYSIBM.
La función GRAPHIC devuelve una representación GRAPHIC de un tipo de serie gráfica o una representación GRAPHIC de un tipo de indicación de fecha y hora.
El resultado de la función es un GRAPHIC. Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
Fecha y hora a gráfico
>>-GRAPHIC--(--expresión-fechahora--+--------------+--)-------->< '-,--+-ISO---+-' +-USA---+ +-EUR---+ +-JIS---+ '-LOCAL-'
La página de códigos de la serie es la página de códigos de la base de datos en el servidor de aplicaciones.
>>-TIME--(--expresión--)---------------------------------------><
Es esquema es SYSIBM.
La función TIME devuelve una hora a partir de un valor.
El argumento debe ser una hora, una indicación de fecha y hora o una representación de serie válida de una hora o de una indicación de fecha y hora que no sea LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB o BLOB.
Sólo las bases de datos Unicode soportan un argumento que sea una representación de serie gráfica de una hora o de una indicación de fecha y hora.
El resultado de la función es una hora. Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
Las demás normas dependen del tipo de datos del argumento:
Ejemplo:
SELECT * FROM IN_TRAY WHERE TIME(RECEIVED) >= CURRENT TIME + 1 HOUR
>>-TIMESTAMP--(--expresión--+------------+--)------------------>< '-,expresión-'
Es esquema es SYSIBM.
La función TIMESTAMP devuelve una indicación de fecha y hora a partir de un valor o de un par de valores.
Sólo las bases de datos Unicode soportan un argumento que sea una representación de serie gráfica de una fecha, una hora o una indicación de fecha y hora.
Las normas para los argumentos dependen de que se especifique o no el segundo argumento.
Una serie de longitud 14 debe ser una serie de dígitos que represente una fecha y hora válida en el formato aaaaxxddhhmmss, donde aaaa es el año, xx es el mes, dd es el día, hh es la hora, mm son los minutos y ss son los segundos.
El resultado de la función es una indicación de fecha y hora. Si cualquiera de los argumentos puede ser nulo, el resultado puede ser nulo; si cualquiera de los argumentos es nulo, el resultado es el valor nulo.
Las demás normas dependen de que se especifique el segundo argumento:
Ejemplo:
TIMESTAMP(START_DATE, START_TIME)
Devuelve el valor '1988-12-25-17.12.30.000000'.
Carácter a Vargraphic:
>>-VARGRAPHIC--(--expresión-serie-caracteres--)----------------><
Fecha y hora a Vargraphic:
>>-VARGRAPHIC--(--expresión-fechahora--)-----------------------><
Gráfica a Vargraphic:
>>-VARGRAPHIC--(--expresión-serie-gráfica--+-----------+--)---->< '-,--entero-'
Es esquema es SYSIBM.
La función VARGRAPHIC devuelve una representación de serie gráfica de un:
El resultado de la función es una serie gráfica de longitud variable (tipo de datos VARGRAPHIC). Si el primer argumento puede ser nulo, el resultado puede ser nulo; si el primer argumento es nulo, el resultado es el valor nulo.
Carácter a Vargraphic
El atributo de longitud del resultado es igual al atributo de longitud del argumento.
Supongamos que S indica el valor de la expresión-serie-caracteres. Cada carácter de un solo byte de S se convierte a su representación de doble byte equivalente o al carácter de sustitución de doble byte en el resultado; cada carácter de doble byte de S se correlaciona 'tal cual'. Si el primer byte de un carácter de doble byte aparece como el último byte de S, se convierte en el carácter de sustitución de doble byte. Se conserva el orden secuencial de los caracteres en S.
A continuación se proporcionan consideraciones adicionales acerca de la conversión.
Fecha y hora a Vargraphic
Gráfica a Vargraphic
Si la longitud de la expresión-serie-gráfica es mayor que el atributo de longitud del resultado, se realiza un truncamiento y se devuelve un aviso (SQLSTATE 01004), a menos que los caracteres truncados sean espacios en blanco y la expresión-serie-gráfica no sea una serie larga (LONG VARGRAPHIC o DBCLOB).