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:
TimeRango 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
- Funciones de conversión de tipos
- Funciones para trabajar con fechas y horas
- Funciones para trabajar con arrays
- El ajuste
date_time_input_format - El ajuste
date_time_output_format - El parámetro de configuración del servidor
timezone - El ajuste
session_timezone - El tipo de dato
DateTime - El tipo de dato
Date