Todos os produtos
Search
Central de documentação

Lindorm:Especifique um fuso horário para uma conexão do LindormTable

Última atualização: Jun 28, 2026

O LindormTable 2.7.6 e versões posteriores oferecem suporte a múltiplos fusos horários. As versões anteriores são fixas em UTC+8, fuso horário da Java Virtual Machine (JVM) em execução no servidor. Este documento explica como definir um fuso horário no nível de sessão para que os dados TIMESTAMP sejam retornados no fuso horário esperado pela sua aplicação.

Funcionamento das configurações de fuso horário

O LindormTable utiliza uma variável de fuso horário no nível de sessão. Cada conexão possui configuração independente. Alterar o fuso horário da sessão não afeta outras conexões nem o padrão do servidor.

Apenas o tipo de dado TIMESTAMP é afetado pelas configurações de fuso horário. Os valores DATE e TIME são armazenados como strings simples e sempre retornados sem alterações.

Tipo de dado

Formato

Sensível a fuso horário

DATE

yyyy-mm-dd (por exemplo, 2024-08-30)

Não

TIME

hh:mm:ss (por exemplo, 08:11:15)

Não

TIMESTAMP

yyyy-mm-dd hh:mm:ss.SSS ou milissegundos desde epoch (por exemplo, 1724976675345)

Sim — exibido no fuso horário da sessão

Pré-requisitos

Antes de começar, certifique-se de que:

Importante

Caso não consiga atualizar o LindormTable para a versão 2.7.6 ou posterior no console do Lindorm, entre em contato com o suporte técnico (ID do DingTalk: s0s3eg3).

Defina o fuso horário da sessão

O fuso horário padrão é UTC+8. Use a instrução SET para alterar o fuso horário da conexão atual. Essa configuração aplica-se exclusivamente à conexão em uso, sem impactar outras conexões ou os padrões globais. Para a sintaxe completa, consulte Session variables.

-- Set to UTC
SET @@time_zone = 'UTC';

-- Set to UTC+8
SET @@time_zone = '+08:00';

-- Set to Shanghai local time
SET @@time_zone = 'Asia/Shanghai';

Para verifique a configuração atual:

SELECT @@time_zone;

Exemplos

MySQL command-line tool

Para instruções de conexão, consulte Use a MySQL client to connect to and use LindormTable.

O exemplo abaixo cria uma tabela e insere uma linha com valores de data, hora e timestamp, demonstrando como a coluna TIMESTAMP se comporta ao alternar entre fusos horários.

Configurar a tabela:

-- Create the table
CREATE TABLE tb (p1 INT, c1 DATE, c2 TIME, c3 TIMESTAMP(3), PRIMARY KEY (p1));

-- Insert a row
UPSERT INTO tb (p1, c1, c2, c3) VALUES (1, '2024-08-30', '08:11:15', '2024-08-30 08:11:15.354');

Consultar em UTC+8 (padrão):

  1. Verifique o fuso horário atual.

    SELECT @@time_zone;

    Saída esperada:

    +-------------+
    | @@time_zone |
    +-------------+
    | +08:00      |
    +-------------+
  2. Consulte a tabela.

    SELECT * FROM tb;

    Saída esperada:

    +------+------------+----------+-------------------------+
    | p1   | c1         | c2       | c3                      |
    +------+------------+----------+-------------------------+
    |    1 | 2024-08-30 | 08:11:15 | 2024-08-30 08:11:15.354 |
    +------+------------+----------+-------------------------+

Alternar para UTC e consultar novamente:

  1. Altere o fuso horário para UTC.

    SET @@time_zone = 'UTC';
  2. Confirme a alteração.

    SELECT @@time_zone;

    Saída esperada:

    +-------------+
    | @@time_zone |
    +-------------+
    | UTC         |
    +-------------+
  3. Consulte a tabela novamente.

    SELECT * FROM tb;

    Saída esperada:

    +------+------------+----------+-------------------------+
    | p1   | c1         | c2       | c3                      |
    +------+------------+----------+-------------------------+
    |    1 | 2024-08-30 | 08:11:15 | 2024-08-30 00:11:15.354 |
    +------+------------+----------+-------------------------+

Os valores de c1 (DATE) e c2 (TIME) permanecem inalterados por não serem sensíveis ao fuso horário. Já o valor de c3 (TIMESTAMP) muda de 08:11:15 para 00:11:15 — uma diferença de 8 horas que reflete a conversão de UTC+8 para UTC.

Java

Para instruções de conexão, consulte Use Java JDBC APIs to develop applications.

O driver MySQL Connector/J oferece dois parâmetros que atuam em conjunto para controlar o fuso horário da conexão:

Parâmetro

Valor de exemplo

Descrição

connectionTimeZone

UTC

Fuso horário utilizado pelo driver para converter valores TIMESTAMP no lado do cliente. O padrão é o fuso horário da JVM.

forceConnectionTimeZoneToSession

true

Quando definido como true, o driver executa SET time_zone no momento da conexão, aplicando o valor de connectionTimeZone à sessão do servidor. Recomendamos adicionar este parâmetro caso sua aplicação opere em uma região fora do fuso horário UTC+8.

Inclua ambos os parâmetros na string de conexão quando a aplicação for executada fora de UTC+8:

String url = "jdbc:mysql://ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/"
    + database
    + "?sslMode=disabled"
    + "&allowPublicKeyRetrieval=true"
    + "&useServerPrepStmts=true"
    + "&useLocalSessionState=true"
    + "&rewriteBatchedStatements=true"
    + "&cachePrepStmts=true"
    + "&prepStmtCacheSize=100"
    + "&prepStmtCacheSqlLimit=50000000"
    + "&forceConnectionTimeZoneToSession=true";

Properties properties = new Properties();
properties.put("user", username);
properties.put("password", password);

// Get a connection
Connection connection = DriverManager.getConnection(url, properties);

Python

Para instruções de conexão, consulte Use mysql-connector-python to develop applications.

Passe o parâmetro time_zone na chamada de conexão para definir o fuso horário da sessão no momento da conexão:

Parâmetro

Valor de exemplo

Descrição

time_zone

'UTC'

Define o fuso horário da sessão no servidor. Configure este valor com o fuso horário onde a aplicação está em execução.

connection = mysql.connector.connect(
    host='<LindormTable endpoint for MySQL>',
    port=33060,
    user='<Username>',
    passwd='<Password>',
    database='<Database name>',
    time_zone='<Time zone>'   # for example, 'UTC' or 'Asia/Tokyo'
)

Go

Para instruções de conexão, consulte Use Go to develop applications.

O Golang MySQL Driver transmite variáveis de sessão por meio da string de conexão. Valores do tipo string devem ser codificados em URL: envolva o valor entre aspas simples (') e codifique essas aspas como %27. Por exemplo, a string 'UTC' torna-se %27UTC%27.

Parâmetro

Valor de exemplo

Descrição

parseTime

true

Retorna valores DATE e TIMESTAMP como time.Time em vez de strings brutas. Necessário para que o parâmetro loc tenha efeito.

loc

Local

Fuso horário do Go usado ao analisar valores time.Time. Local utiliza o fuso horário do sistema. Só entra em vigor quando parseTime=true.

time_zone

%27UTC%27

Define o fuso horário da sessão no servidor. O valor deve estar codificado em URL — aspas simples tornam-se %27.

Para mais informações sobre como o driver lida com variáveis de sistema, consulte System Variables.

urlString := fmt.Sprintf(
    "%s:%s@tcp(%s:%d)/%s?timeout=%s&parseTime=true&loc=Local",
    user, password, host, port, database, connectTimeout,
)
timeZoneValue := url.QueryEscape("'UTC'")  // produces %27UTC%27
urlString = urlString + "&time_zone=" + timeZoneValue

db, err := sql.Open("mysql", urlString)
if err != nil {
    panic(err.Error())
}

Próximos passos