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.

Leer el esquema de sintaxisOmitir el esquema de sintaxis visualDATE_TRUNC(serie-formato ,expresión-fecha-hora)

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.
Tabla 1. Valores permitidos para una serie de formato
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
Los valores serie-formato no distinguen entre mayúsculas y minúsculas.

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
Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

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