TIMESTAMP función escalar
La función TIMESTAMP devuelve un valor TIMESTAMP WITHOUT TIME ZONE de su argumento o argumentos.
El esquema es SYSIBM.
Las reglas para los argumentos dependen de si se especifica el segundo argumento.
- Si solo se especifica un argumento:El argumento debe ser una expresión que devuelva un valor de uno de los siguientes tipos de datos integrados: una fecha, una marca de tiempo, una cadena de caracteres, una cadena gráfica o una cadena binaria. Si expression-1 es un carácter o una cadena gráfica, no debe ser un CLOB o DBCLOB y debe tener uno de los siguientes valores:
- Una representación de cadena válida de una fecha o marca de tiempo con una longitud real que no sea mayor de 255 bytes. Se ignora una zona horaria en una representación de cadena de una marca de tiempo. Para conocer los formatos válidos de las representaciones de cadenas de marcas de tiempo, consulte Representaciones de cadenas de valores de fecha y hora.
- Una cadena de caracteres o cadena gráfica con una longitud real de 8 que se supone que es un valor de reloj de tienda de IBM® zSystems™ .
- Una serie de caracteres con una longitud real de 13 que se adopte como resultado de la función GENERATE_UNIQUE.
- Una cadena de caracteres o cadena gráfica con una longitud real de 14 que representa una fecha y hora válidas en el formato aaaa-xx-dd-hh-mm-ss, 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.1
Si expression-1 es una cadena binaria, no debe ser un BLOB y su valor debe ser uno de los siguientes:- Una cadena binaria con una longitud real de 8 bytes que se supone que es un valor de reloj de tienda ( IBM zSystems ).
- Una cadena binaria con una longitud real de 16 bytes que se supone que es un valor extendido de Store Clock ( IBM zSystems ).
Una cadena binaria con una longitud real de 13 bytes que se supone que es el resultado de la función GENERATE_UNIQUE.
- Si se especifican ambos argumentos:
- Si el tipo de datos del segundo argumento no es un número entero:
El primer argumento debe ser una expresión que devuelva un valor de uno de los siguientes tipos de datos integrados: una fecha, una cadena de caracteres o una cadena gráfica. El segundo argumento debe ser una expresión que devuelva un valor de uno de los siguientes tipos de datos integrados: una hora, una cadena de caracteres o una cadena gráfica. Una cadena de caracteres o una cadena gráfica debe ser una representación de cadena válida de una hora.
Si expression-1 es una cadena de caracteres o una cadena gráfica, no debe ser un CLOB o DBCLOB, y su valor debe ser una representación de cadena válida de una fecha con una longitud real que no sea superior a 255 bytes. Si expression-2 es una cadena de caracteres o una cadena gráfica, no debe ser un CLOB o DBCLOB, y su valor debe ser una representación de cadena válida de una hora con una longitud real que no sea superior a 255 bytes. Para conocer los formatos válidos de las representaciones de cadenas de fechas y horas, consulte Representaciones de cadenas de valores de fecha y hora.
- Si el tipo de datos del segundo argumento es entero:
El primer argumento debe ser una expresión que devuelva un valor de uno de los siguientes tipos de datos integrados: una marca de tiempo, una fecha, una cadena de caracteres o una cadena gráfica. El segundo argumento debe ser una constante entera en el rango de 0 a 12 que representa la precisión de la marca de tiempo.
Si expression-1 es una cadena de caracteres o una cadena gráfica, no debe ser un CLOB o DBCLOB, y su valor debe ser una representación de cadena válida de una marca de tiempo o una fecha con una longitud real que no sea superior a 255 bytes.
Si expression-1 es una cadena binaria, no debe ser un BLOB y su valor debe ajustarse a las reglas para cuando solo se especifica un argumento. El segundo argumento debe ser una constante entera en el rango de 0 a 12 que representa la precisión de la marca de tiempo.
- Si el tipo de datos del segundo argumento no es un número entero:
El resultado de la función es un valor TIMESTAMP WITHOUT TIME ZONE.
La precisión de la marca de tiempo y otras reglas dependen de si se especifica el segundo argumento:
- Si se especifican ambos argumentos y el segundo argumento no es un número entero:
- El resultado es un valor TIMESTAMP(6) SIN ZONA HORARIA con la fecha especificada por el primer argumento y la hora especificada por el segundo argumento. La parte de segundos fraccionarios de la marca de tiempo es cero.
- Si se especifican los dos argumentos y el segundo argumento es un entero:
- El resultado es un valor de TIMESTAMP SIN ZONA HORARIA con la precisión especificada en el segundo argumento.
- Si solo se especifica un argumento y es un TIMESTAMP (p) SIN ZONA HORARIA:
- El resultado es el valor TIMESTAMP (p) SIN ZONA HORARIA.
- Si solo se especifica un argumento y es un TIMESTAMP(p) WITH TIME ZONE:
- El resultado es el valor del argumento, convertido a TIMESTAMP(p) SIN ZONA HORARIA. El valor es la marca de tiempo local, no UTC.
- Si sólo se especifica un único argumento y éste es un valor DATE:
- El resultado es esa fecha con una hora supuesta de medianoche que se convierte a TIMESTAMP(0) SIN ZONA HORARIA.
- Si solo se especifica un argumento y es un carácter o una cadena gráfica:
- El resultado es el valor TIMESTAMP(6) SIN ZONA HORARIA que se representa mediante esa cadena ampliada con cualquier información de hora que falte. Si el argumento es una cadena de longitud 14, el TIMESTAMP tiene una parte de segundos fraccionarios de cero. El valor de la cadena no debe contener una especificación de zona horaria.
- Si solo se especifica un argumento y es una cadena binaria:
- El resultado es el valor TIMESTAMP(6) SIN ZONA HORARIA que está representado por esa cadena. Si el valor del año en la marca de tiempo resultante es mayor que 9999, se devuelve un error.
Si los argumentos sólo incluyen información de fecha, la información de hora del valor del resultado es todo ceros.
El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo.
Si un argumento es una cadena con un CCSID que no es el mismo que el CCSID predeterminado correspondiente en el servidor, la cadena se convierte primero a ese CCSID.
El resultado CCSID es el CCSID apropiado del esquema de codificación del argumento y el subtipo de resultado es el subtipo apropiado del CCSID. Si se especifican ambos argumentos y sus esquemas de codificación son diferentes, el resultado CCSID es el CCSID apropiado del esquema de codificación de la aplicación.
Notas
- Especificar un LRSN como argumento:
- Cuando se utiliza un LRSN de 6 bytes como argumento de la función TIMESTAMP, debe justificarse a la izquierda y rellenarse a la derecha hasta una longitud total de 8 bytes. Cuando se utiliza un LRSN de 10 bytes, debe justificarse a la izquierda y rellenarse a la derecha hasta una longitud total de 16 bytes.
Efecto de los segundos intercalares o de la zona horaria del sistema en el resultado de la función TIMESTAMP con un valor binario como primer argumento:
Db2 no se ajusta a los segundos bisiestos ni a la zona horaria del sistema cuando convierte un valor de IBM zSystems Store Clock o un valor extendido de IBM zSystems Store Clock a un valor de marca de tiempo.
- Sintaxis alternativa:
- Si solo se especifica un argumento, se debe utilizar la especificación CAST para una máxima portabilidad. Para más información, consulte la especificación CAST.
TIMESTAMP_TZ es una función similar. Para más información, consulte la función escalar TIMESTAMP_TZ.
ejemplos
- Ejemplo: TIMESTAMP con una columna DATE y una columna TIME como argumentos
- Supongamos que la tabla TABLEX contiene una columna DATE llamada DATECOL y una columna TIME llamada TIMECOL. Para alguna fila de la tabla, suponga que DATECOL representa el 25 de diciembre de 2008 y TIMECOL representa 17 horas, 12 minutos y 30 segundos después de la medianoche. La siguiente función devuelve el valor « 2008-12-25-17.12.30.000000 ».
TIMESTAMP(DATECOL, TIMECOL) - Ejemplo: TIMESTAMP con una marca de tiempo con argumento de zona horaria
- Supongamos que la variable de host PRSTSZ contiene ' 2008-02-29.20.00.000000 -08.30 '. La siguiente declaración devuelve el valor « 2008-02-29.20.00.000000 »:
SELECT TIMESTAMP(:PRSTSZ) FROM PROJECT; - Ejemplo: TIMESTAMP con una marca de tiempo y un entero como argumentos
- La siguiente invocación de la función TIMESTAMP convierte una cadena de marca de tiempo con 7 dígitos de segundos fraccionarios en un valor TIMESTAMP(9) SIN ZONA HORARIA y devuelve un valor de « 2007-09-24-15.53.37.216247400 »:
TIMESTAMP('2007-09-24-15.53.37.2162474',9);
