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 | String tanggal, tidak terkait dengan zona waktu. |
TIME | Format | String waktu, tidak terkait dengan zona waktu. |
TIMESTAMP | Format yang menunjukkan tahun, bulan, hari, jam, menit, detik, dan milidetik digunakan. Format berikut didukung:
|
|
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.
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
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.
Kueri zona waktu.
SELECT @@time_zone;Hasil sampel:
+-------------+ | @@time_zone | +-------------+ | +08:00 | +-------------+Hasilnya menunjukkan bahwa zona waktu saat ini adalah UTC+8.
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 | +------+------------+----------+-------------------------+Ubah zona waktu menjadi UTC.
SET @@time_zone='UTC';Periksa apakah zona waktu berubah sesuai harapan.
SELECT @@time_zone;Hasil sampel:
+-------------+ | @@time_zone | +-------------+ | UTC | +-------------+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
c1danc2bertipe DATE dan TIME tetap tidak berubah karena mereka tidak terkait dengan zona waktu. Format data di kolomc3bertipe 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 |
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 |
| Kami sarankan Anda mengatur parameter ini ke zona waktu sistem tempat bisnis beroperasi. Anda dapat menggunakan pernyataan |
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 |
loc | Local | Tentukan zona waktu tempat data waktu bertipe Catatan Parameter ini hanya berlaku jika Anda mengatur parameter |
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())
}