Función escalar DATE_TRUNC
La función DATE_TRUNC trunca un valor de fecha, hora o indicación de fecha y hora en la unidad de tiempo especificada.
El esquema es SYSIBM.
- serie-formato
Expresión que devuelve una serie de caracteres que no excede los 255 bytes y que, después de eliminar todos los espacios en blanco iniciales y finales, es una de las series de caracteres listadas en Tabla 1. La subserie resultante debe ser un elemento de formato válido para el tipo de la expresión de fecha y hora especificada (SQLSTATE 22007). Por ejemplo, un valor DATE no se puede truncar en su primera hora, minuto o segundo, y un valor TIME no se trunca en el primer día de su año.
- expresión-fecha-hora
- Expresión que devuelve un valor DATE, TIME o TIMESTAMP, o un valor DECIMAL que representa una duración de fecha, hora o de indicación de fecha y hora. Las representaciones de serie de estos tipos de datos se deben emitir explícitamente a un valor DATE, TIME, TIMESTAMP o DECIMAL. Si desea más información sobre duraciones, consulte Operaciones de fecha y hora y duraciones.
| Si la serie de formato es... | la expresión de fecha y hora se trunca en... | Por ejemplo... | se trunca en... |
|---|---|---|---|
| 'MILLENNIUM' o 'MILLENNIUMS' | Primer día de su milenio. | 1999-02-14 |
1000-01-01 |
| 'CENTURY' o 'CENTURIES' | Primer día de su siglo. | 1999-02-14 |
1900-01-01 |
| 'DECADE' o 'DECADES' | Primer día de su década. | 1999-02-14 |
1990-01-01 |
| 'YEAR' o 'YEARS' | Primer día de su año. | 1999-02-14 |
1999-01-01 |
| 'QUARTER' | Primer día de su trimestre. | 2017-05-14 20:38:40.24 |
2017-04-01 00:00:00 |
| 'MONTH' o 'MONTHS' | Primer día de su mes. | 2017-05-14 20:38:40.24 |
2017-05-01 00:00:00 |
| 'WEEK' | Primer día de su semana. | 2017-05-14 20:38:40.24 |
2017-05-08 00:00:00 |
| 'DAY' o 'DAYS' | El principio de su día. | 2017-05-14 20:38:40.24 |
2017-05-14 00:00:00 |
| 'HOUR' o 'HOURS' | El principio de su hora. | 2017-05-14 20:38:40.24 |
2017-05-14 20:00:00 |
| 'MINUTE' o 'MINUTES' | El principio de su minuto. | 20:38:40.24576985 |
20:38:00 |
| 'SECOND' o 'SECONDS' | El principio de su segundo. | 20:38:40.24576985 |
20:38:40 |
| 'MILLISECOND' o 'MILLISECONDS' | El principio de su milisegundo. | 20:38:40.24576985 |
20:38:40.245 |
| 'MICROSECOND' o 'MICROSECOND' | El principio de su microsegundo. | 20:38:40.24576985 |
20:38:40.245769 |
Resultado
Si la expresión de fecha y hora especificada es:
- Un valor DATE o TIMESTAMP, el resultado es un valor TIMESTAMP
- Un valor TIME, el resultado es un valor TIME
- Un valor DECIMAL que representa una duración de fecha, hora o de indicación de fecha y hora, el resultado es un valor DECIMAL del mismo tipo
Ejemplos
- Ejemplo 1: Truncar un valor DATE en el inicio del mes.
values date_trunc('MONTH', DATE('2007-02-18')) Resultado: 2007-02-01 00:00:00 - Ejemplo 2: Truncar un valor TIMESTAMP en el inicio de la hora.
values date_trunc('HOUR', TIMESTAMP('2017-02-14 20:38:40.24')); Resultado: 2017-02-14 20:00:00 - Ejemplo 3: Truncar un valor TIME en el inicio del minuto.
values date_trunc('MINUTE', TIME('20:38:40')); Resultado: 20:38:00 - Ejemplo 4: Una duración de fecha tiene el tipo de datos DECIMAL(8,0). Por ejemplo, el valor 00200203 representa una duración de 20 años, 2 meses y 3 días. Trunque una duración de fecha en el inicio del mes.
values date_trunc('MONTH', DECIMAL('00200203')); Resultado: 00200200 - Ejemplo 5: Un duración de hora tiene el tipo de datos DECIMAL(6,0). Por ejemplo, el valor 102930 representa una duración de 10 horas, 29 minutos y 30 segundos. Trunque una duración de hora en el inicio del minuto.
values date_trunc('MINUTE', DECIMAL('102930')); Resultado: 102900 - Ejemplo 6: Una duración de indicación de fecha y hora tiene el tipo de datos DECIMAL(14+s,s), donde s es la precisión de la indicación de fecha y hora. Por ejemplo, el valor DECIMAL(20,6) 00070005032040.000301 representa una duración de 7 años, 0 meses, 5 días, 3 horas, 20 minutos y 40,000301 segundos. Trunque una duración de indicación de fecha y hora en el inicio de la hora.
values date_trunc('HOUR', DECIMAL('00070005032040.000301')); Resultado: 70005030000.000000
