Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengatur zona waktu MySQL?

Saya pikir ini mungkin berguna:

Ada tiga tempat di mana zona waktu dapat diatur di MySQL:

Dalam file "my.cnf" di bagian [mysqld]

default-time-zone='+00:00'

@@global.time_zone variabel

Untuk melihat nilai yang ditetapkan:

SELECT @@global.time_zone;

Untuk menetapkan nilai, gunakan salah satu:

SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';

(Menggunakan zona waktu bernama seperti 'Europe/Helsinki' berarti Anda harus memiliki tabel zona waktu yang terisi dengan benar.)

Perlu diingat bahwa +02:00 adalah offset. Europe/Berlin adalah zona waktu (yang memiliki dua offset) dan CEST adalah waktu jam yang sesuai dengan offset tertentu.

@@session.time_zone variabel

SELECT @@session.time_zone;

Untuk mengaturnya gunakan salah satu:

SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";

Keduanya mungkin mengembalikan SYSTEM yang berarti mereka menggunakan zona waktu yang ditetapkan di my.cnf.

Agar nama zona waktu berfungsi, Anda harus menyiapkan tabel informasi zona waktu yang harus diisi:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Saya juga menyebutkan cara mengisi tabel tersebut di jawaban ini .

Untuk mendapatkan offset zona waktu saat ini sebagai TIME

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

Ini akan mengembalikan 02:00:00 jika zona waktu Anda adalah +2:00.

Untuk mendapatkan stempel waktu UNIX saat ini:

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());

Untuk mendapatkan kolom stempel waktu sebagai stempel waktu UNIX

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

Untuk mendapatkan kolom tanggal waktu UTC sebagai stempel waktu UNIX

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`

Catatan:Mengubah zona waktu tidak akan mengubah tanggal waktu atau stempel waktu yang disimpan , tetapi ini akan menampilkan tanggal waktu yang berbeda untuk kolom stempel waktu yang ada karena kolom tersebut disimpan secara internal sebagai stempel waktu UTC dan ditampilkan secara eksternal di zona waktu MySQL saat ini.

Saya membuat lembar contekan di sini:Haruskah MySQL mengatur zona waktunya ke UTC?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memasang Admin di Aplikasi Sendiri

  2. Cara Mengimpor dan Mengekspor File CSV Menggunakan PHP dan MySQL

  3. Ubah karakter latin1 pada tabel UTF8 menjadi UTF8

  4. Replikasi Asynchronous Failover Otomatis di MySQL 8.0.22

  5. Looping Over Hasil Set di MySQL