全部产品
Search
文档中心

Lindorm:Tentukan zona waktu untuk koneksi LindormTable

更新时间:Jul 02, 2025

LindormTable versi lebih lama dari 2.7.6 hanya mendukung zona UTC+8, yang merupakan zona waktu Java Virtual Machine (JVM). Mulai versi 2.7.6, LindormTable menyediakan fitur lintas zona waktu. Topik ini menjelaskan cara menentukan zona waktu untuk koneksi LindormTable guna memastikan data waktu dikembalikan sesuai harapan.

Informasi latar belakang

Lindorm mendukung tipe data TIMESTAMP, DATE, dan TIME. Hanya tipe TIMESTAMP yang terkait dengan zona waktu. Tabel berikut menjelaskan tipe data tersebut.

Tipe Data

Format

Keterkaitan dengan Zona Waktu

DATE

Format yyyy-mm-dd digunakan, yang menunjukkan tahun, bulan, dan hari. Contoh: 2024-08-30.

String tanggal, tidak terkait dengan zona waktu.

TIME

Format hh:mm:ss digunakan, yang menunjukkan jam, menit, dan detik. Contoh: 08:11:15.

String waktu, tidak terkait dengan zona waktu.

TIMESTAMP

Format yang menunjukkan tahun, bulan, hari, jam, menit, detik, dan milidetik digunakan. Format berikut didukung:

  • yyyy-mm-dd hh:mm:ss.SSS, akurat hingga milidetik. Contoh: 2024-08-30 08:11:15.354.

  • Timestamp epoch tipe LONG (integer panjang). Contoh: 1724976675345. Unit: milidetik.

  • String tanggal dan waktu, terkait dengan zona waktu dan menunjukkan waktu serta tanggal di zona waktu saat ini.

  • String timestamp tipe LONG, menunjukkan jumlah milidetik sejak 1 Januari 1970, 00:00:00 UTC. Unit: milidetik.

Prasyarat

Versi LindormTable adalah 2.7.6 atau lebih baru. Untuk informasi tentang cara melihat atau meningkatkan versi LindormTable, lihat Catatan Rilis LindormTable dan Tingkatkan Versi Mesin Minor Instance Lindorm.

Penting

Jika Anda tidak dapat meningkatkan versi LindormTable instance Anda ke 2.7.6 atau lebih baru di konsol Lindorm, hubungi dukungan teknis (ID DingTalk: s0s3eg3).

Batasan

Hanya protokol MySQL yang mengizinkan Anda menentukan zona waktu untuk koneksi LindormTable. Untuk informasi lebih lanjut, lihat Gunakan Protokol MySQL untuk Mengembangkan Aplikasi (Direkomendasikan).

Tentukan zona waktu

Penting
  • Zona waktu default untuk Lindorm adalah UTC+8.

  • Zona waktu yang Anda tentukan hanya berlaku untuk koneksi LindormTable saat ini.

Gunakan sintaks SET untuk menentukan zona waktu untuk koneksi LindormTable saat ini. Zona waktu yang ditentukan hanya berlaku untuk koneksi LindormTable tersebut. Untuk informasi lebih lanjut tentang sintaks, lihat Variabel Sesi.

  • Tentukan zona waktu UTC untuk koneksi LindormTable saat ini.

    SET @@time_zone='UTC';
  • Tentukan zona waktu +08:00 untuk koneksi LindormTable saat ini.

    SET @@time_zone='+08:00';
  • Tentukan zona waktu Shanghai, yaitu waktu lokal Shanghai, untuk koneksi Lindorm saat ini.

    SET @@time_zone='Asia/Shanghai';

Kueri zona waktu saat ini

SELECT @@time_zone;

Contoh

Alat baris perintah MySQL

Untuk informasi tentang cara menggunakan alat baris perintah MySQL untuk terhubung ke LindormTable, lihat Gunakan Klien MySQL untuk Terhubung dan Menggunakan LindormTable.

Dalam contoh ini, tabel bernama tb dibuat dan diisi dengan mengeksekusi pernyataan berikut:

-- Buat tabel.
CREATE TABLE tb(p1 int, c1 date, c2 time, c3 timestamp(3), PRIMARY KEY(p1));

-- Masukkan data ke dalam tabel.
UPSERT INTO tb(p1,c1,c2,c3) VALUES(1, '2024-08-30', '08:11:15', '2024-08-30 08:11:15.354');

Anda dapat mengkueri dan mengubah zona waktu.

  1. Kueri zona waktu.

    SELECT @@time_zone;

    Hasil sampel:

    +-------------+
    | @@time_zone |
    +-------------+
    | +08:00      |
    +-------------+

    Hasilnya menunjukkan bahwa zona waktu saat ini adalah UTC+8.

  2. Kueri format data waktu di zona waktu saat ini.

    SELECT * FROM tb;

    Hasil sampel:

    +------+------------+----------+-------------------------+
    | p1   | c1         | c2       | c3                      |
    +------+------------+----------+-------------------------+
    |    1 | 2024-08-30 | 08:11:15 | 2024-08-30 08:11:15.354 |
    +------+------------+----------+-------------------------+
  3. Ubah zona waktu menjadi UTC.

    SET @@time_zone='UTC';
  4. Periksa apakah zona waktu berubah sesuai harapan.

    SELECT @@time_zone;

    Hasil sampel:

    +-------------+
    | @@time_zone |
    +-------------+
    | UTC         |
    +-------------+
  5. Periksa ulang format data waktu di zona waktu saat ini untuk memeriksa apakah zona waktu berubah sesuai harapan.

    SELECT * FROM tb;

    Hasil sampel:

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

    Format data kolom c1 dan c2 bertipe DATE dan TIME tetap tidak berubah karena mereka tidak terkait dengan zona waktu. Format data di kolom c3 bertipe TIMESTAMP diubah menjadi tanggal dan waktu di zona waktu UTC.

Java

Untuk informasi tentang cara menggunakan Java Database Connectivity (JDBC) untuk terhubung ke LindormTable, lihat Gunakan API JDBC Java untuk Mengembangkan Aplikasi.

Jika bisnis Anda beroperasi di wilayah yang tidak menggunakan zona waktu UTC+8, kami sarankan Anda menambahkan konfigurasi forceConnectionTimeZoneToSession=true ke string koneksi untuk menentukan zona waktu koneksi.

Parameter

Nilai contoh

Deskripsi

connectionTimeZone

UTC

Tentukan zona waktu koneksi. Nilai default adalah zona waktu JVM pada klien, yang juga merupakan zona waktu default yang digunakan oleh mesin virtual yang menjalankan program Java. Jika Anda tidak memiliki persyaratan khusus, abaikan parameter ini.

forceConnectionTimeZoneToSession

true

Gunakan pernyataan set time_zone untuk menentukan nilai parameter connectionTimeZone untuk server. Jika bisnis Anda beroperasi di wilayah yang tidak menggunakan zona waktu UTC+8, kami sarankan Anda menambahkan parameter ini.

Kode koneksi contoh

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

//Dapatkan koneksi yang telah dibuat.
Connection connection = DriverManager.getConnection(url, properties);

Python

Untuk informasi tentang cara menggunakan driver mysql-connector-python untuk terhubung ke LindormTable, lihat Gunakan mysql-connector-python untuk Mengembangkan Aplikasi.

Jika bisnis Anda beroperasi di wilayah yang menggunakan zona waktu UTC, Anda harus menambahkan parameter time_zone ke string koneksi untuk mengubah zona waktu koneksi. Sebagai contoh, tambahkan string time_zone='UTC' ke string koneksi.

Parameter

Nilai contoh

Deskripsi

time_zone

'UTC'

Kami sarankan Anda mengatur parameter ini ke zona waktu sistem tempat bisnis beroperasi. Anda dapat menggunakan pernyataan set time_zone untuk menentukan zona waktu untuk server.

Kode contoh:

connection = mysql.connector.connect(host='<Titik akhir LindormTable untuk MySQL>', port=33060, user='<Nama pengguna>', passwd='<Kata sandi>', database='<Nama basis data>', time_zone='<Zona waktu>')

Go

Untuk informasi tentang cara menggunakan Golang MySQL Driver untuk terhubung ke LindormTable, lihat Gunakan Go untuk Mengembangkan Aplikasi.

Jika bisnis Anda beroperasi di wilayah yang menggunakan zona waktu UTC, Anda harus menambahkan konfigurasi loc=Locall&time_zone=%27UTC%27 ke string koneksi.

Parameter

Nilai contoh

Deskripsi

parseTime

true

Saat Anda mengatur parameter parseTime ke true, data waktu bertipe DATE dan TIMESTAMP dikembalikan sebagai data waktu bertipetime.Time.

loc

Local

Tentukan zona waktu tempat data waktu bertipe time.Time dianalisis. Nilai Local menunjukkan zona waktu sistem.

Catatan

Parameter ini hanya berlaku jika Anda mengatur parameter parseTime ke true.

time_zone

%27UTC%27

Tentukan zona waktu sistem tempat bisnis beroperasi.

Untuk informasi lebih lanjut, lihat Variabel Sistem.

Kode contoh:

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'")
urlString = urlString + "&time_zone=" + timeZoneValue
db, err := sql.Open("mysql", urlString)
if err != nil {
	panic(err.Error())
}