-
El tipo
Datedebería ser suficiente en la mayoría de los casos. Este tipo requiere 2 bytes para almacenar una fecha y limita el rango a[1970-01-01, 2149-06-06]. -
Date32cubre un rango de fechas más amplio. Requiere 4 bytes para almacenar una fecha y limita el rango a[1900-01-01, 2299-12-31] -
DateTimealmacena valores de fecha y hora con precisión de segundos y un rango de[1970-01-01 00:00:00, 2106-02-07 06:28:15]Requiere 4 bytes por valor. -
Para los casos en los que se necesita más precisión, se puede usar
DateTime64. Esto permite almacenar tiempo con una precisión de hasta nanosegundos, con un rango de[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]. Requiere 8 bytes por valor.
now() para devolver la hora actual y now64() para obtenerla con la precisión especificada en el primer argumento.
Tipos Time y Time64
Time y Time64, introducidos en la versión 25.6. Son útiles para representar horarios recurrentes, patrones diarios o situaciones en las que tiene sentido separar los componentes de fecha y hora.
El uso de
Time y Time64 requiere habilitar la configuración: SET enable_time_time64_type = 1;Estos tipos se introdujeron en la versión 25.6Time almacena horas, minutos y segundos con precisión de segundos. Se almacena internamente como un entero con signo de 32 bits y admite un rango de [-999:59:59, 999:59:59], lo que permite valores que superan las 24 horas. Esto puede ser útil para registrar tiempo transcurrido o realizar operaciones aritméticas que den como resultado valores fuera de un único día.
Para la precisión de fracciones de segundo, Time64 almacena la hora con segundos fraccionarios configurables como un valor Decimal64 con signo. Acepta un parámetro de precisión (0-9) para definir el número de dígitos fraccionarios. Los valores de precisión más habituales son 3 (milisegundos), 6 (microsegundos) y 9 (nanosegundos).
Ni Time ni Time64 admiten zonas horarias; representan valores puros de hora sin contexto regional.
Vamos a crear una tabla con columnas de tiempo:
Time, los valores numéricos se interpretan como segundos desde 00:00:00. Para Time64, los valores numéricos se interpretan como segundos desde 00:00:00, y la parte fraccionaria se interpreta según la precisión de la columna:
Zonas horarias
DateTime o DateTime64:
America/New_York.
dt_1ydt64_1se convierten automáticamente aEurope/Berlinen tiempo de consulta.dt_2ydt64_2no tenían una zona horaria especificada, por lo que usan la zona horaria local del servidor, que en este caso esEurope/London.
dt_1 y dt64_1 se convierten a Europe/Berlin, mientras que dt_2 y dt64_2 usan la zona horaria local del servidor.
Funciones de fecha y hora
toDate para convertir un valor DateTime en el tipo Date:
toDateTime64 para convertir DateTime a DateTime64:
toDateTime para convertir Date o DateTime64 de nuevo a DateTime: