ROUND_TIMESTAMP, función escalar

La función escalar ROUND_TIMESTAMP devuelve una indicación de fecha y hora que se redondea a la unidad especificada por la serie de formato de indicación de fecha y hora. Si no se especifica formato-cadena, la expresión se redondea al día más cercano, como si se hubiera especificado 'DD' para formato-cadena.

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualROUND_TIMESTAMP(expresión ,«DD»,cadena de formato )

El esquema es SYSIBM.

expresión
FL 507 Expresión que devuelve un valor de cualquiera de los siguientes tipos de datos integrados: una fecha, una marca de tiempo, una cadena de caracteres o una cadena gráfica. Si expression es un carácter 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 con una longitud real que no sea superior a 255 bytes. Se ignora una zona horaria en una representación de cadena de una marca de tiempo. Para los formatos válidos de representaciones de cadenas de fechas y marcas de tiempo, consulte Representaciones de cadenas de valores de fecha y hora.
Soporte solo para transferencia directa: FL 507 Si la expresión es una fecha, Db2 pasa la función a IBM® Db2 Analytics Accelerator como una expresión de solo paso. Para obtener más información, consulte Acelerar consultas con expresiones de solo paso.
cadena de formato
Expresión que devuelve un tipo de datos de cadena de caracteres o cadena gráfica incorporado, con una longitud que no supera los 255 bytes. format-string contiene una plantilla de cómo debe redondearse la marca de tiempo representada por expression. Por ejemplo, si formato-cadena es 'DD', la marca de tiempo que está representada por expresión se redondea al día más cercano. la cadena de formato debe ser una plantilla válida para una marca de tiempo y no debe incluir espacios en blanco al principio o al final.

Los valores permitidos para la cadena de formato se enumeran en la siguiente tabla.

Tabla 1. Modelos de formato ROUND_TIMESTAMP y TRUNC_TIMESTAMP
Modelo de formato Descripción del redondeo o truncado para el modelo de formato Ejemplo de ROUND_TIMESTAMP Ejemplo de TRUNC_TIMESTAMP
CC
SCC
Siglo.

Inicio del cambioUno mayor que los dos primeros dígitos de un año de cuatro dígitos. fin del cambio

Inicio del cambioPara ROUND_TIMESTAMP, redondea al año 50 del siglo.fin del cambio

Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1901-01-01-00.00.00.000000
Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1801-01-01-00.00.00.000000
SYYYY
AAAA
AÑO
AÑO
AAAA
AÑO
A
Año.

Inicio del cambioPara ROUND_TIMESTAMP, redondea el 1 de julio al 1 de enero del año siguiente.fin del cambio

Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1898-01-01-00.00.00.000000
Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1897-01-01-00.00.00.000000
IYYY
IYY
IY
I
Año ISO.

Inicio del cambioPara ROUND_TIMESTAMP, se redondea el 1 de julio al primer día del siguiente año ISO. El primer día del año ISO es el lunes de la primera semana ISO.fin del cambio

Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1898-01-03-00.00.00.000000
Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1897-01-04-00.00.00.000000
Q Trimestre.

Inicio del cambioPara ROUND_TIMESTAMP, redondea al día 16 del segundo mes del trimestre.fin del cambio

Valor de entrada:
1999-06-04-12.12.30.000000
Resultado
1999-07-01-00.00.00.000000
Valor de entrada:
1999-06-04-12.12.30.000000
Resultado
1999-04-01-00.00.00.000000
MES
LUNES
LUNES
Mes.

Inicio del cambioPara ROUND_TIMESTAMP, redondea al día 16 del mes.fin del cambio

Valor de entrada:
1999-06-18-12.12.30.000000
Resultado
1999-07-01-00.00.00.000000
Valor de entrada:
1999-06-18-12.12.30.000000
Resultado
1999-06-01-00.00.00.000000
WW Mismo día de la semana que el primer día del año.

Inicio del cambioPara ROUND_TIMESTAMP, redondea a la hora 12 del 4º día de la semana, con respecto al primer día del año.fin del cambio

Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-05-06-00.00.00.000000
Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-04-29-00.00.00.000000
IW Mismo día de la semana que el primer día del año ISO.

Inicio del cambioPara ROUND_TIMESTAMP, redondea a la hora 12 del 4º día de la semana, con respecto al primer día del año ISO.fin del cambio

Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-05-08-00.00.00.000000
Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-05-01-00.00.00.000000
W Mismo día de la semana que el primer día del año.

Inicio del cambioPara ROUND_TIMESTAMP, redondea a la hora 12 del 4º día de la semana, con respecto al primer día del mes.fin del cambio

Valor de entrada:
2000-06-21-12.12.30.000000
Resultado
2000-06-22-00.00.00.000000
Valor de entrada:
2000-06-21-12.12.30.000000
Resultado
2000-06-15-00.00.00.000000
DDD
DD
J
Día.

Inicio del cambioPara ROUND_TIMESTAMP, redondea a la hora 12 del día.fin del cambio

Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-18-00.00.00.000000
Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-17-00.00.00.000000
DÍA
DÍA
D
Primer día de la semana.

Inicio del cambioPara ROUND_TIMESTAMP, redondea hacia arriba con respecto a la 12ª hora del 4º día de la semana. El primer día de la semana es siempre el domingo.fin del cambio

Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-21-00.00.00.000000
Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-14-00.00.00.000000
HH
HH12
HH24
Hora.

Inicio del cambioPara ROUND_TIMESTAMP, se redondea a los 30 minutos.fin del cambio

Valor de entrada:
2000-05-17-23.59.59.000000
Resultado
2000-05-18-00.00.00.000000
Valor de entrada:
2000-05-17-23.59.59.000000
Resultado
2000-05-17-23.00.00.000000
MI Minuto.

Inicio del cambioPara ROUND_TIMESTAMP, se redondea a los 30 segundos.fin del cambio

Valor de entrada:
2000-05-17-23.58.45.000000
Resultado
2000-05-17-23.59.00.000000
Valor de entrada:
2000-05-17-23.58.45.000000
Resultado
2000-05-17-23.58.00.000000
SS Segundo.

Inicio del cambioPara ROUND_TIMESTAMP, se redondea a 500000 microsegundos.fin del cambio

Valor de entrada:
2000-05-17-23.58.45.500000
Resultado
2000-05-17-23.58.46.000000
Valor de entrada:
2000-05-17-23.58.45.500000
Resultado
2000-05-17-23.58.45.000000

Si la expresión no tiene el tipo de datos TIMESTAMP SIN ZONA HORARIA, la expresión se transforma de la siguiente manera:

  • Si la expresión es un valor TIMESTAMP WITH TIME ZONE, la expresión se convierte en TIMESTAMP WITHOUT TIME ZONE, con la misma precisión que la expresión.
  • De lo contrario, la expresión se convierte en TIMESTAMP(6) SIN ZONA HORARIA.

El resultado de la función tiene el mismo tipo de datos que el tipo de datos al que se asigna la expresión.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo.

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.

ejemplos

  • Establezca la variable de host RND_TMSTMP con la marca de tiempo de entrada redondeada al valor de año más cercano.
       SET :RND_TMSTMP = ROUND_TIMESTAMP(TIMESTAMP_FORMAT('2000-08-14 17:30:00', 
                                                  'YYYY-MM-DD HH24:MI:SS'), 'YEAR');    
    El valor establecido es « 2001-01-01-00.00.00.000000 ».
  • Supongamos que PRSTSZ es una variable SQL con el valor TIMESTAMP WITH TIME ZONE ' 2008-04-15.20.00.000000-08:30 '. El valor de entrada se convierte primero a TIMESTAMP SIN ZONA HORARIA (como ' 2008-04-15.20.00.000000 ') para la función ROUND_TIMESTAMP.
    SELECT ROUND_TIMESTAMP(PRSTSZ) 
    	FROM PROJECT;
    La función ROUND_TIMESTAMP devuelve un valor TIMESTAMP SIN ZONA HORARIA de « 2008-04-16.00.00.000000 ».