Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Time

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;
-- Parse Time
-- - from string,
-- - from integer interpreted as number of seconds since 00:00:00.
INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225);

SELECT * FROM tab ORDER BY event_id;
┌─event_id─┬──────time─┐
│        1 │ 14:30:25 │
│        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 │ 14:30:25 │
│        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 │ 14:30:25 │
│        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─┐
│ 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─┐
│ 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

Navigation