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

Setel zona waktu basis data MySQL ke GMT

Tidak, tidak mungkin mengubah zona waktu untuk satu database dalam instance MySQL.

Kami dapat mengambil kembali time_zone server dan klien pengaturan dengan kueri, seperti ini:

SELECT @@global.time_zone, @@session.time_zone;

Kami juga dapat mengubah zona waktu klien untuk satu sesi, atau mengubah zona waktu untuk seluruh instance MySQL.

Namun kita harus benar-benar menyadari implikasi bahwa perubahan ini akan terjadi pada koneksi klien yang ada, dan bagaimana DATETIME dan TIMESTAMP nilai yang sudah disimpan dalam instance akan diinterpretasikan.

Untuk mengatur zona waktu server saat startup instance MySQL, kita dapat memodifikasi /etc/my.cnf file (atau dari mana pun parameter inisialisasi instance mysql dibaca), di bawah [mysqld] bagian:

[mysqld]
default-time-zone='+00:00' 

-- atau --

Dimungkinkan juga (kurang diinginkan) untuk menambahkan --default_time_zone='+00:00' opsi ke mysqld_safe

CATATAN: Mengubah pengaturan zona waktu di server MySQL TIDAK mengubah nilai yang disimpan di kolom DATETIME atau TIMESTAMP yang ada, TETAPI karena secara efektif mengubah konteks di mana nilai yang disimpan tersebut ditafsirkan, itu akan terlihat seperti semua nilai DIgeser. (Di mana 08:00 dianggap berarti 08:00 CST, dengan zona waktu server diubah dari CST ke GMT, '08:00' yang sama sekarang akan diambil menjadi 08:00 GMT, yang secara efektif akan menjadi 02:00 CST.

Juga perlu diingat bahwa kolom TIMESTAMP selalu disimpan dalam UTC, sedangkan kolom DATETIME tidak memiliki zona waktu.http://dev.mysql.com/doc/refman/5.5/en/datetime.html

Setiap sesi klien dapat mengubah pengaturan zona waktu untuk sesi mereka sendiri:

SET time_zone='-06:00';

Namun semua ini tidak benar-benar "menyelesaikan" masalah konversi zona waktu, itu hanya memindahkan masalah konversi.

Tidak ada yang secara inheren "buruk" dengan lapisan aplikasi yang menangani konversi zona waktu; terkadang, itulah tempat terbaik untuk menangani. Itu hanya harus dilakukan dengan benar dan konsisten.

(Yang aneh tentang pengaturan yang Anda jelaskan adalah bahwa aplikasi menyimpan nilai DATETIME seolah-olah zona waktu server MySQL diatur ke GMT, tetapi zona waktu server MySQL diatur ke sesuatu yang lain.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih semua kolom di sql kecuali satu kolom?

  2. java.sql.SQLException:Indeks Kolom di luar jangkauan, 0 <1

  3. Perbedaan antara SEKARANG(), SYSDATE() &CURRENT_DATE() di MySQL

  4. Bagaimana cara mendapatkan bidang terakhir dalam database Mysql dengan PHP?

  5. Ubah perilaku Session.delete() SQLAlchemy