Tous les produits
Search
Centre de documentation

Lindorm:Specify a time zone for a LindormTable connection

Dernière mise à jour :Aug 11, 2026

LindormTable 2.7.6 et les versions ultérieures prennent en charge plusieurs fuseaux horaires. Les versions antérieures sont figées sur UTC+8, le fuseau horaire de la machine virtuelle Java (JVM) exécutée sur le serveur. Cette rubrique explique comment définir un fuseau horaire au niveau de la session afin que les données TIMESTAMP soient renvoyées dans le fuseau horaire attendu par votre application.

Fonctionnement des paramètres de fuseau horaire

LindormTable utilise une variable de fuseau horaire au niveau de la session. Chaque connexion possède son propre paramètre de fuseau horaire indépendant. La modification du fuseau horaire de la session n'affecte ni les autres connexions, ni la valeur par défaut du serveur.

Seul le type de données TIMESTAMP est affecté par les paramètres de fuseau horaire. Les valeurs DATE et TIME sont stockées sous forme de chaînes brutes et sont toujours renvoyées telles quelles.

Type de données Format Sensible au fuseau horaire
DATE yyyy-mm-dd (par exemple, 2024-08-30) Non
TIME hh:mm:ss (par exemple, 08:11:15) Non
TIMESTAMP yyyy-mm-dd hh:mm:ss.SSS ou millisecondes epoch (par exemple, 1724976675345) Oui — affiché dans le fuseau horaire de la session

Prérequis

Avant de commencer, assurez-vous que :

Important

Si vous ne pouvez pas mettre à niveau LindormTable vers la version 2.7.6 ou ultérieure depuis la console Lindorm, contactez le support technique (ID DingTalk : s0s3eg3).

Définir le fuseau horaire de la session

Le fuseau horaire par défaut est UTC+8. Utilisez l'instruction SET pour modifier le fuseau horaire de la connexion actuelle. Ce paramètre s'applique uniquement à cette connexion et n'affecte ni les autres connexions, ni les valeurs par défaut globales. Pour connaître la syntaxe complète, consultez Variables de session.

-- 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';

Pour vérifier le paramètre actuel :

SELECT @@time_zone;

Exemples

Outil de ligne de commande MySQL

Pour obtenir des instructions de connexion, consultez Utiliser un client MySQL pour se connecter à LindormTable et l'utiliser.

L'exemple suivant crée une table et insère une ligne contenant des valeurs de date, d'heure et d'horodatage, puis montre comment la colonne TIMESTAMP change lorsque vous basculez de fuseau horaire.

Configuration de la table :

-- 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');

Requête dans UTC+8 (par défaut) :

  1. Vérifiez le fuseau horaire actuel.

    SELECT @@time_zone;

    Sortie attendue :

    +-------------+
    | @@time_zone |
    +-------------+
    | +08:00      |
    +-------------+
  2. Interrogez la table.

    SELECT * FROM tb;

    Sortie attendue :

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

Basculez vers UTC et réinterrogez :

  1. Modifiez le fuseau horaire pour UTC.

    SET @@time_zone = 'UTC';
  2. Confirmez la modification.

    SELECT @@time_zone;

    Sortie attendue :

    +-------------+
    | @@time_zone |
    +-------------+
    | UTC         |
    +-------------+
  3. Interrogez à nouveau la table.

    SELECT * FROM tb;

    Sortie attendue :

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

Les valeurs c1 (DATE) et c2 (TIME) restent inchangées car elles ne sont pas sensibles au fuseau horaire. La valeur c3 (TIMESTAMP) passe de 08:11:15 à 00:11:15 — une différence de 8 heures reflétant la conversion de UTC+8 vers UTC.

Java

Pour obtenir des instructions de connexion, consultez Utiliser les API Java JDBC pour développer des applications.

Le pilote MySQL Connector/J fournit deux paramètres qui fonctionnent conjointement pour contrôler le fuseau horaire de la connexion :

Paramètre Exemple de valeur Description
connectionTimeZone UTC Fuseau horaire utilisé par le pilote pour convertir les valeurs TIMESTAMP côté client. Par défaut, il s'agit du fuseau horaire de la JVM.
forceConnectionTimeZoneToSession true Lorsque ce paramètre est défini sur true, le pilote exécute SET time_zone lors de la connexion, appliquant ainsi connectionTimeZone à la session du serveur. Si votre activité s'exécute dans une région n'utilisant pas le fuseau horaire UTC+8, nous vous recommandons d'ajouter ce paramètre.

Ajoutez les deux paramètres à votre chaîne de connexion lorsque votre application s'exécute en dehors 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

Pour obtenir des instructions de connexion, consultez Utiliser mysql-connector-python pour développer des applications.

Transmettez le paramètre time_zone dans l'appel de connexion pour définir le fuseau horaire de la session lors de la connexion :

Paramètre Exemple de valeur Description
time_zone 'UTC' Définit le fuseau horaire de la session sur le serveur. Définissez ce paramètre sur le fuseau horaire dans lequel votre application s'exécute.
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

Pour obtenir des instructions de connexion, consultez Utiliser Go pour développer des applications.

Le pilote Golang MySQL transmet les variables de session via la chaîne de connexion. Les valeurs de chaîne doivent être encodées en URL : entourez la valeur de guillemets simples ('), puis encodez ces guillemets en pourcentage sous la forme %27. Par exemple, la chaîne 'UTC' devient %27UTC%27.

Paramètre Exemple de valeur Description
parseTime true Renvoie les valeurs DATE et TIMESTAMP sous forme de time.Time au lieu de chaînes brutes. Requis pour que le paramètre loc prenne effet.
loc Local Fuseau horaire Go utilisé lors de l'analyse des valeurs time.Time. Local utilise le fuseau horaire du système. Ne prend effet que lorsque parseTime=true.
time_zone %27UTC%27 Définit le fuseau horaire de la session sur le serveur. La valeur doit être encodée en URL — les guillemets simples deviennent %27.

Pour plus d'informations sur la manière dont le pilote gère les variables système, consultez Variables système.

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())
}

Étapes suivantes