-
O tipo
Datedeve ser suficiente na maioria dos casos. Esse tipo requer 2 bytes para armazenar uma data e limita o intervalo a[1970-01-01, 2149-06-06]. -
Date32cobre um intervalo maior de datas. Ele requer 4 bytes para armazenar uma data e limita o intervalo a[1900-01-01, 2299-12-31] -
DateTimearmazena valores de data e hora com precisão de segundos e um intervalo de[1970-01-01 00:00:00, 2106-02-07 06:28:15]Ele requer 4 bytes por valor. -
Para os casos em que é necessária mais precisão,
DateTime64pode ser usado. Isso permite armazenar data e hora com precisão de até nanossegundos, com um intervalo de[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]. Ele requer 8 bytes por valor.
now() para retornar a hora atual e now64() para obtê-la com a precisão especificada pelo primeiro argumento.
Tipos Time e Time64
Time e Time64, introduzidos na versão 25.6. Eles são úteis para representar agendas recorrentes, padrões diários ou situações em que faz sentido separar os componentes de data e hora.
Para usar
Time e Time64, é necessário ativar a configuração: SET enable_time_time64_type = 1;Esses tipos foram introduzidos na versão 25.6Time armazena horas, minutos e segundos com precisão de segundos. Internamente, ele é armazenado como um inteiro com sinal de 32 bits e oferece suporte a um intervalo de [-999:59:59, 999:59:59], permitindo valores que excedem 24 horas. Isso pode ser útil ao acompanhar o tempo decorrido ou realizar operações aritméticas que resultem em valores fora de um único dia.
Para precisão de subsegundos, Time64 armazena o horário com segundos fracionários configuráveis como um valor Decimal64 com sinal. Ele aceita um parâmetro de precisão (0-9) para definir o número de dígitos fracionários. Valores de precisão comuns são 3 (milissegundos), 6 (microssegundos) e 9 (nanossegundos).
Nem Time nem Time64 oferecem suporte a fusos horários — eles representam valores puros de horário, sem contexto regional.
Vamos criar uma tabela com colunas de horário:
Time, os valores numéricos são interpretados como segundos desde 00:00:00. Para Time64, os valores numéricos são interpretados como segundos desde 00:00:00, com a parte fracionária interpretada de acordo com a precisão da coluna:
Fusos horários
DateTime ou DateTime64:
America/New_York.
dt_1edt64_1são convertidos automaticamente paraEurope/Berlinno momento da consulta.dt_2edt64_2não tinham um fuso horário especificado, então usam o fuso horário local do servidor, que, neste caso, éEurope/London.
dt_1 e dt64_1 são convertidos para Europe/Berlin, enquanto dt_2 e dt64_2 usam o fuso horário local do servidor.
Funções de data e hora
toDate para converter um valor DateTime no tipo Date:
toDateTime64 para converter DateTime para DateTime64:
toDateTime para converter Date ou DateTime64 novamente em DateTime: