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.
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
SCCSiglo.
Uno mayor que los dos primeros dígitos de un año de cuatro dígitos. 
Para ROUND_TIMESTAMP, redondea al año 50 del siglo.
Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1901-01-01-00.00.00.000000Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1801-01-01-00.00.00.000000SYYYY
AAAA
AÑO
AÑO
AAAA
AÑO
AAño.
Para ROUND_TIMESTAMP, redondea el 1 de julio al 1 de enero del año siguiente.
Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1898-01-01-00.00.00.000000Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1897-01-01-00.00.00.000000IYYY
IYY
IY
IAño ISO.
Para 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.
Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1898-01-03-00.00.00.000000Valor de entrada:
1897-12-04-12.22.22.000000
Resultado
1897-01-04-00.00.00.000000Q Trimestre.
Para ROUND_TIMESTAMP, redondea al día 16 del segundo mes del trimestre.
Valor de entrada:
1999-06-04-12.12.30.000000
Resultado
1999-07-01-00.00.00.000000Valor de entrada:
1999-06-04-12.12.30.000000
Resultado
1999-04-01-00.00.00.000000MES
LUNES
LUNES
Mes.
Para ROUND_TIMESTAMP, redondea al día 16 del mes.
Valor de entrada:
1999-06-18-12.12.30.000000
Resultado
1999-07-01-00.00.00.000000Valor de entrada:
1999-06-18-12.12.30.000000
Resultado
1999-06-01-00.00.00.000000WW Mismo día de la semana que el primer día del año.
Para ROUND_TIMESTAMP, redondea a la hora 12 del 4º día de la semana, con respecto al primer día del año.
Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-05-06-00.00.00.000000Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-04-29-00.00.00.000000IW Mismo día de la semana que el primer día del año ISO.
Para ROUND_TIMESTAMP, redondea a la hora 12 del 4º día de la semana, con respecto al primer día del año ISO.
Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-05-08-00.00.00.000000Valor de entrada:
2000-05-05-12.12.30.000000
Resultado
2000-05-01-00.00.00.000000W Mismo día de la semana que el primer día del año.
Para ROUND_TIMESTAMP, redondea a la hora 12 del 4º día de la semana, con respecto al primer día del mes.
Valor de entrada:
2000-06-21-12.12.30.000000
Resultado
2000-06-22-00.00.00.000000Valor de entrada:
2000-06-21-12.12.30.000000
Resultado
2000-06-15-00.00.00.000000DDD
DD
JDía.
Para ROUND_TIMESTAMP, redondea a la hora 12 del día.
Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-18-00.00.00.000000Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-17-00.00.00.000000DÍA
DÍA
DPrimer día de la semana.
Para 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.
Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-21-00.00.00.000000Valor de entrada:
2000-05-17-12.59.59.000000
Resultado
2000-05-14-00.00.00.000000HH
HH12
HH24Hora.
Para ROUND_TIMESTAMP, se redondea a los 30 minutos.
Valor de entrada:
2000-05-17-23.59.59.000000
Resultado
2000-05-18-00.00.00.000000Valor de entrada:
2000-05-17-23.59.59.000000
Resultado
2000-05-17-23.00.00.000000MI Minuto.
Para ROUND_TIMESTAMP, se redondea a los 30 segundos.
Valor de entrada:
2000-05-17-23.58.45.000000
Resultado
2000-05-17-23.59.00.000000Valor de entrada:
2000-05-17-23.58.45.000000
Resultado
2000-05-17-23.58.00.000000SS Segundo.
Para ROUND_TIMESTAMP, se redondea a 500000 microsegundos.
Valor de entrada:
2000-05-17-23.58.45.500000
Resultado
2000-05-17-23.58.46.000000Valor 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.
El valor establecido es « 2001-01-01-00.00.00.000000 ».SET :RND_TMSTMP = ROUND_TIMESTAMP(TIMESTAMP_FORMAT('2000-08-14 17:30:00', 'YYYY-MM-DD HH24:MI:SS'), 'YEAR'); - 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.
La función ROUND_TIMESTAMP devuelve un valor TIMESTAMP SIN ZONA HORARIA de « 2008-04-16.00.00.000000 ».SELECT ROUND_TIMESTAMP(PRSTSZ) FROM PROJECT;
