Todos os produtos
Search
Central de documentação

Lindorm:Funções de tempo

Última atualização: Jun 28, 2026

O LindormTable oferece quatro funções de tempo para formatar timestamps, converter entre timestamps UNIX e timestamps locais da sessão e calcular diferenças entre datas. Essas funções aplicam-se exclusivamente ao LindormTable. Todas as operações utilizam o fuso horário da sessão atual.

Pré-requisitos

Antes de começar, verifique se você atende aos seguintes requisitos:

  • LindormTable 2.7.8 ou posterior (para DATE_FORMAT, FROM_UNIXTIME e DATEDIFF)

  • Lindorm SQL 2.8.7.0 ou posterior (para DATE_FORMAT, FROM_UNIXTIME e DATEDIFF)

  • LindormTable 2.8.0 ou posterior e Lindorm SQL 2.9.0.0 ou posterior (para UNIX_TIMESTAMP)

Para visualizar ou atualizar a versão secundária do mecanismo do LindormTable, consulte Notas de versão do LindormTable e Atualizar a versão secundária do mecanismo de uma instância Lindorm. Para verificar a versão do Lindorm SQL, acesse Versões do SQL.

Funções suportadas

Função

Descrição

DATE_FORMAT

Formata um timestamp utilizando o fuso horário da sessão atual.

FROM_UNIXTIME

Converte um valor numérico (BIGINT, INTEGER, SMALLINT ou TINYINT) em timestamp, respeitando o fuso horário da sessão atual. Funciona como o inverso de UNIX_TIMESTAMP.

DATEDIFF

Calcula a diferença em dias entre dois timestamps, considerando apenas os valores de data.

UNIX_TIMESTAMP

Converte um timestamp ou string de timestamp em timestamp UNIX. Retorna um valor DOUBLE em segundos. É a operação inversa de FROM_UNIXTIME.

DATE_FORMAT

Formata um timestamp com base no fuso horário da sessão atual. Para visualizar ou definir o fuso horário da sessão, consulte Especificar um fuso horário para uma conexão do LindormTable.

Sintaxe

DATE_FORMAT(TIMESTAMP ts, STRING format)

Parâmetros

Parâmetro

Obrigatório

Descrição

ts

Sim

Timestamp a ser formatado.

format

Sim

String de formatação composta por especificadores (por exemplo, %Y-%m-%d). Caracteres que não iniciam com % são retornados sem alterações. Consulte a lista completa em Especificadores de formato.

Exemplo

Formate o timestamp 2024-01-01 17:20:35 como at 17:20:35 on Jan 1st, 2024:

SELECT DATE_FORMAT('2024-01-01 17:20:35', 'at %T on %b %D, %Y');

Saída:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 17:20:35 on JAN 1st, 2024 |
+------------------------------+

FROM_UNIXTIME

Converte um valor numérico em timestamp usando o fuso horário da sessão atual. Esta função é o inverso de UNIX_TIMESTAMP. Aceita valores BIGINT, INTEGER, SMALLINT e TINYINT. A entrada representa os segundos decorridos desde 1970-01-01 00:00:00 UTC, mantendo até três casas decimais.

Apenas o protocolo MySQL permite alterar o fuso horário de uma conexão. Consulte Usar o protocolo MySQL para desenvolver aplicações (recomendado) e Usar um cliente MySQL para conectar e utilizar o LindormTable .

Sintaxe

-- Convert a UNIX timestamp to a session-local timestamp.
FROM_UNIXTIME(Number seconds)

-- Convert and format the result.
-- Equivalent to: DATE_FORMAT(FROM_UNIXTIME(seconds), format)
FROM_UNIXTIME(Number seconds, STRING format)

A forma com dois parâmetros equivale a chamar DATE_FORMAT sobre o resultado da forma com um único parâmetro. O parâmetro format aceita os mesmos especificadores do DATE_FORMAT. Para mais detalhes, visualize Especificadores de formato.

Parâmetros

Parâmetro

Obrigatório

Descrição

seconds

Sim

Timestamp UNIX em segundos. Mantém até três casas decimais. Representa o tempo decorrido desde 1970-01-01 00:00:00 UTC.

format

Não

String de formatação. Utiliza os mesmos especificadores do DATE_FORMAT.

Exemplos

Exemplo 1: Converter um timestamp UNIX

Converta 10.1578 para timestamp usando o fuso horário da sessão atual:

SELECT FROM_UNIXTIME(10.1578);

Saída:

+-------------------------+
| EXPR$0                  |
+-------------------------+
| 1970-01-01 08:00:10.158 |
+-------------------------+

Altere o fuso horário da sessão para +03:00 e converta novamente:

-- Change the session time zone.
SET @@time_zone='+03:00';

-- Convert using the new time zone.
SELECT FROM_UNIXTIME(10.1578);

Saída:

+-------------------------+
| EXPR$0                  |
+-------------------------+
| 1970-01-01 03:00:10.158 |
+-------------------------+

Exemplo 2: Converter e formatar

Converta 10.1578 e formate o resultado conforme o fuso horário da sessão atual:

SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');

Saída:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 08:00:10 on JAN 1st, 1970 |
+------------------------------+

Defina o fuso horário da sessão como +03:00 e formate novamente:

-- Change the session time zone.
SET @@time_zone='+03:00';

-- Convert and format using the new time zone.
SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');

Saída:

+------------------------------+
| EXPR$0                       |
+------------------------------+
| at 03:00:10 on JAN 1st, 1970 |
+------------------------------+

DATEDIFF

Calcula a diferença em dias entre dois timestamps no fuso horário da sessão atual. O resultado corresponde a ts1 - ts2, comparando apenas as datas — horas, minutos e segundos são ignorados.

  • Resultado positivo: ts1 representa uma data posterior a ts2.

  • Resultado negativo: ts1 indica uma data anterior a ts2.

  • Zero: ts1 e ts2 ocorrem na mesma data.

Sintaxe

DATEDIFF(TIMESTAMP ts1, TIMESTAMP ts2)

Parâmetros

Parâmetro

Obrigatório

Descrição

ts1

Sim

Primeiro timestamp.

ts2

Sim

Segundo timestamp.

Exemplos

Exemplo 1: ts1 é anterior a ts2

SELECT DATEDIFF('2024-01-01 15:30:00', '2024-01-02 00:59:59');

Saída:

+--------+
| EXPR$0 |
+--------+
|     -1 |
+--------+

Exemplo 2: ts1 é posterior a ts2

SELECT DATEDIFF('2024-01-05 15:30:00', '2024-01-02 00:59:59');

Saída:

+--------+
| EXPR$0 |
+--------+
|      3 |
+--------+

Exemplo 3: ts1 e ts2 na mesma data

Embora os horários sejam diferentes, a data é idêntica, resultando em 0:

SELECT DATEDIFF('2024-01-02 15:30:00', '2024-01-02 00:59:59');

Saída:

+--------+
| EXPR$0 |
+--------+
|      0 |
+--------+

UNIX_TIMESTAMP

Converte um timestamp ou string de timestamp em timestamp UNIX, retornando um valor DOUBLE. Trata-se da operação inversa de FROM_UNIXTIME.

Importante

O uso de UNIX_TIMESTAMP exige LindormTable 2.8.0 ou posterior e Lindorm SQL 2.9.0.0 ou posterior. Se necessário, atualize a versão secundária do mecanismo do LindormTable no console do Lindorm.

A precisão do valor retornado varia conforme o tipo de entrada:

  • Entrada TIMESTAMP: mantém 3 casas decimais.

  • Entrada VARCHAR: a string representa o timestamp no fuso horário da sessão atual, preservando até 6 casas decimais.

É possível utilizar UNIX_TIMESTAMP nos seguintes contextos:

Sintaxe

UNIX_TIMESTAMP(ts)

Parâmetros

Parâmetro

Obrigatório

Descrição

ts

Sim

Timestamp a ser convertido. Deve ser do tipo TIMESTAMP ou VARCHAR.

Exemplos

Crie uma tabela e insira dados de amostra:

-- Create a table with TIMESTAMP and VARCHAR timestamp columns.
CREATE TABLE t1(p1 INT, c1 TIMESTAMP, c2 VARCHAR, c3 DOUBLE, PRIMARY KEY(p1));

-- Insert sample rows.
UPSERT INTO t1(p1, c1, c2, c3) VALUES
(1, '2025-01-01 08:30:00',          '2025-01-01 08:30:00',          '12.24'),
(2, '1970-01-01 08:00:00.123',      '1970-01-01 08:00:00.123',      '10.32'),
(3, '1970-01-01 08:00:10.13579',    '1970-01-01 08:00:10.13579',    '10.12'),
(4, '1970-01-01 08:00:10.123456789','1970-01-01 08:00:10.123456789','17.33');

Exemplo 1: Consultar timestamps UNIX de uma tabela

Valores TIMESTAMP (c1) mantêm 3 casas decimais; valores VARCHAR (c2) preservam até 6.

SELECT p1, UNIX_TIMESTAMP(c1), UNIX_TIMESTAMP(c2) FROM t1;

Saída:

+----+------------+------------+
| p1 | EXPR$1     | EXPR$2     |
+----+------------+------------+
| 1  | 1735691400 | 1735691400 |
| 2  | 0.123      | 0.123      |
| 3  | 10.135     | 10.13579   |
| 4  | 10.123     | 10.123457  |
+----+------------+------------+

Exemplo 2: Filtrar linhas usando UNIX_TIMESTAMP na cláusula WHERE

Conte as linhas onde o timestamp UNIX de c1 seja maior que 10:

SELECT COUNT(*) FROM t1 WHERE UNIX_TIMESTAMP(c1) > 10;

Saída:

+--------+
| EXPR$0 |
+--------+
| 3      |
+--------+

Exemplo 3: Gravar resultado de UNIX_TIMESTAMP em uma coluna DOUBLE

Utilize UNIX_TIMESTAMP na cláusula VALUES para escrever o resultado diretamente na coluna DOUBLE c3:

UPSERT INTO t1(p1, c3) VALUES(1, UNIX_TIMESTAMP('1970-01-01 08:00:00.123'));

Para verificar o resultado, execute:

SELECT * FROM t1;

Especificadores de formato

As funções DATE_FORMAT e FROM_UNIXTIME aceitam os seguintes especificadores de formato.

Importante

Caracteres na string de formatação que não começam com % são retornados exatamente como foram inseridos.

Especificador

Saída

Descrição

%a

Sun a Sat

Nome abreviado do dia da semana.

%b

Jan a Dec

Nome abreviado do mês.

%c

0 a 12

Mês como valor numérico.

%D

1st, 2nd, 3rd...

Dia do mês com sufixo ordinal.

%d

00 a 31

Dia do mês com dois dígitos.

%e

00 a 31

Dia do mês com dois dígitos.

%f

000000 a 999999

Microssegundos.

%H

00 a 23

Hora no formato 24h, com dois dígitos.

%h

01 a 12

Hora no formato 12h, com dois dígitos.

%I

01 a 12

Hora no formato 12h, com dois dígitos.

%i

00 a 59

Minutos com dois dígitos.

%j

001 a 366

Dia do ano com três dígitos.

%k

0 a 23

Hora no formato 24h, valor numérico.

%l

1 a 12

Hora no formato 12h, valor numérico.

%M

January a December

Nome completo do mês.

%m

01 a 12

Mês com dois dígitos.

%p

AM ou PM

Indicador AM/PM.

%r

hh:mm:ss AM/PM

Horário no formato 12h.

%S

00 a 59

Segundos com dois dígitos.

%s

00 a 59

Segundos com dois dígitos.

%T

hh:mm:ss

Horário no formato 24h.

%W

Sunday a Saturday

Nome completo do dia da semana.

%w

0 a 6

Dia da semana como número. 0 = Domingo, 1 = Segunda-feira.

%Y

Ano com quatro dígitos

Exemplo: 2025.

%y

Ano com dois dígitos

Baseado nos dois últimos dígitos do ano. Exemplo: 24 para 2024.

%%

%

Sinal de porcentagem literal.

%x

x

Qualquer letra que não seja um especificador reservado, retornada sem alteração. Exemplo: %U retorna U.