Saltar al contenido principal
El tipo de dato Time representa una hora con componentes de horas, minutos y segundos. Es independiente de cualquier fecha del calendario y es adecuado para valores que no requieren componentes de día, mes ni año. Sintaxis:
Time
Rango de representación de texto: [-999:59:59, 999:59:59]. Resolución: 1 segundo.

Detalles de implementación

Representación y rendimiento. El tipo de dato Time almacena internamente un entero con signo de 32 bits que codifica los segundos. Los valores de tipo Time y DateTime tienen el mismo tamaño en bytes y, por lo tanto, un rendimiento comparable. Normalización. Al interpretar cadenas como Time, los componentes horarios se normalizan y no se validan. Por ejemplo, 25:70:70 se interpreta como 26:11:10. Valores negativos. Se admiten los signos menos iniciales y se conservan. Los valores negativos suelen surgir de operaciones aritméticas sobre valores Time. Para el tipo Time, las entradas negativas se conservan tanto en entradas de texto (p. ej., '-01:02:03') como en entradas numéricas (p. ej., -3723). Saturación. El componente de hora del día se limita al intervalo [-999:59:59, 999:59:59]. Los valores con horas superiores a 999 (o inferiores a -999) se representan en texto y se vuelven a leer como 999:59:59 (o -999:59:59). Zonas horarias. Time no admite zonas horarias; es decir, los valores Time se interpretan sin contexto regional. Especificar una zona horaria para Time como parámetro de tipo o durante la creación del valor genera un error. Del mismo modo, no se admite aplicar ni cambiar la zona horaria en columnas Time, y esto produce un error. Los valores Time no se reinterpretan silenciosamente según distintas zonas horarias.

Ejemplos

1. Crear una tabla con una columna de tipo Time e insertar datos en ella:
CREATE TABLE tab
(
    `event_id` UInt8,
    `time` Time
)
ENGINE = TinyLog;
-- Parsear Time
-- - desde una cadena,
-- - desde un entero interpretado como número de segundos desde las 00:00:00.
INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225);

SELECT * FROM tab ORDER BY event_id;
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘
2. Filtrado por valores de Time
SET use_legacy_to_time = 0;
SELECT * FROM tab WHERE time = toTime('14:30:25')
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘
Los valores de la columna Time se pueden filtrar usando un valor de texto en el predicado WHERE. Este valor se convertirá automáticamente a Time:
SELECT * FROM tab WHERE time = '14:30:25'
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘
3. Inspección del tipo resultante:
SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type
   ┌────column─┬─type─┐
1. │ 14:30:25 │ Time │
   └───────────┴──────┘

Suma con Date

Se puede sumar un valor Time a un valor Date o Date32 para obtener un valor DateTime o DateTime64:
SET use_legacy_to_time = 0;
SELECT toDate('2024-07-15') + toTime('14:30:25') as datetime;
   ┌────────────datetime─┐
1. │ 2024-07-15 14:30:25 │
   └─────────────────────┘
Consulta Suma de fecha y hora para conocer todas las combinaciones admitidas y los tipos de resultado.

Véase también

Última modificación el 10 de junio de 2026