Pular para o conteúdo principal
O tipo de dado Time64 representa uma hora do dia com segundos fracionários. Ele não possui componentes de data do calendário (dia, mês, ano). O parâmetro precision define o número de dígitos fracionários e, portanto, o tamanho do tick. Tamanho do tick (precisão): 10-precision segundos. Intervalo válido: 0..9. As opções mais comuns são 3 (milissegundos), 6 (microssegundos) e 9 (nanossegundos). Sintaxe:
Time64(precision)
Internamente, Time64 armazena um número decimal com sinal de 64 bits (Decimal64) de segundos fracionários. A resolução do tick é determinada pelo parâmetro precision. Não há suporte a fusos horários: especificar um fuso horário com Time64 gerará um erro. Ao contrário de DateTime64, Time64 não armazena um componente de data. Veja também Time. Intervalo de representação textual: [-999:59:59.000, 999:59:59.999] para precision = 3. Em geral, o mínimo é -999:59:59 e o máximo é 999:59:59, com até precision dígitos fracionários (para precision = 9, o mínimo é -999:59:59.999999999).

Detalhes de implementação

Representação. Valor Decimal64 com sinal que representa frações de segundo com precision dígitos fracionários. Normalização. Ao converter strings para Time64, os componentes de tempo são normalizados e não validados. Por exemplo, 25:70:70 é interpretado como 26:11:10. Valores negativos. Sinais de menos no início são aceitos e preservados. Valores negativos normalmente surgem de operações aritméticas sobre valores Time64. Para Time64, entradas negativas são preservadas tanto em entradas textuais (por exemplo, '-01:02:03.123') quanto em entradas numéricas (por exemplo, -3723.123). Saturação. O componente de hora do dia é limitado ao intervalo [-999:59:59.xxx, 999:59:59.xxx] ao converter em componentes ou serializar para texto. O valor numérico armazenado pode exceder esse intervalo; no entanto, qualquer extração de componentes (horas, minutos, segundos) e representação textual usam o valor saturado. Fusos horários. Time64 não oferece suporte a fusos horários. Especificar um fuso horário ao criar um tipo ou valor Time64 gera um erro. Da mesma forma, tentativas de aplicar ou alterar o fuso horário em colunas Time64 não são compatíveis e resultam em erro.

Exemplos

  1. Criar uma tabela com uma coluna do tipo Time64 e inserir dados nela:
CREATE TABLE tab64
(
    `event_id` UInt8,
    `time` Time64(3)
)
ENGINE = TinyLog;
-- Analisar Time64
-- - a partir de string,
-- - a partir de um número de segundos desde 00:00:00 (parte fracionária de acordo com a precisão).
INSERT INTO tab64 VALUES (1, '14:30:25'), (2, 52225.123), (3, '14:30:25');

SELECT * FROM tab64 ORDER BY event_id;
   ┌─event_id─┬────────time─┐
1. │        1 │ 14:30:25.000 │
2. │        2 │ 14:30:25.123 │
3. │        3 │ 14:30:25.000 │
   └──────────┴──────────────┘
  1. Filtragem de valores Time64
SELECT * FROM tab64 WHERE time = toTime64('14:30:25', 3);
   ┌─event_id─┬────────time─┐
1. │        1 │ 14:30:25.000 │
2. │        3 │ 14:30:25.000 │
   └──────────┴──────────────┘
SELECT * FROM tab64 WHERE time = toTime64(52225.123, 3);
   ┌─event_id─┬────────time─┐
1. │        2 │ 14:30:25.123 │
   └──────────┴──────────────┘
Observação: toTime64 interpreta literais numéricos como segundos com parte fracionária, de acordo com a precisão especificada; portanto, informe explicitamente os dígitos fracionários desejados.
  1. Inspecionando o tipo resultante:
SELECT CAST('14:30:25.250' AS Time64(3)) AS column, toTypeName(column) AS type;
   ┌────────column─┬─type──────┐
1. │ 14:30:25.250 │ Time64(3) │
   └───────────────┴───────────┘

Adição com Date

Um valor Time64 pode ser adicionado a um valor Date ou Date32 para produzir um DateTime64 com a mesma escala do Time64:
SET use_legacy_to_time = 0;
SELECT toDate('2024-07-15') + toTime64('14:30:25.123456', 6) AS dt, toTypeName(dt);
   ┌─────────────────────────dt─┬─toTypeName(dt)─┐
1. │ 2024-07-15 14:30:25.123456 │ DateTime64(6)  │
   └────────────────────────────┴────────────────┘
Consulte Adição de data e hora para ver detalhes sobre todas as combinações compatíveis e os tipos de resultado. Veja também
Última modificação em 10 de junho de 2026