Di satu server, ketika saya menjalankan:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
Di server lain:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
ntp
- dan lihat apa yang tepat untuk Anda!"Jawaban:
Saya pikir ini mungkin berguna:
Ada tiga tempat di mana zona waktu mungkin diatur di MySQL:
Di file "my.cnf" di bagian [mysqld]
@@ variabel global.time_zone
Untuk melihat nilai apa yang ditetapkan untuk:
Untuk menetapkan nilai untuk itu gunakan salah satu:
(Menggunakan zona waktu bernama 'Eropa / Helsinki' berarti Anda harus memiliki tabel zona waktu yang dihuni dengan benar.)
Ingatlah bahwa itu
+02:00
adalah offset.Europe/Berlin
adalah zona waktu (yang memiliki dua offset) danCEST
merupakan waktu jam yang sesuai dengan offset tertentu.@@ session.time_zone variabel
Untuk mengaturnya gunakan salah satu:
Keduanya mungkin mengembalikan SISTEM yang berarti bahwa mereka menggunakan zona waktu yang ditetapkan di my.cnf.
Agar nama zona waktu berfungsi, Anda harus mengatur tabel informasi zona waktu Anda perlu diisi: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Saya juga menyebutkan cara mengisi tabel-tabel dalam jawaban ini .
Untuk mendapatkan offset zona waktu saat ini sebagai
TIME
Ini akan kembali 02:00:00 jika zona waktu Anda adalah +2: 00.
Untuk mendapatkan cap waktu UNIX saat ini:
Untuk mendapatkan kolom cap waktu sebagai cap waktu UNIX
Untuk mendapatkan kolom waktu UTC sebagai cap waktu UNIX
Catatan: Mengubah zona waktu tidak akan mengubah datetime yang disimpan atau stempel waktu , tetapi itu akan menunjukkan datetime yang berbeda untuk kolom stempel waktu yang ada karena mereka 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?
sumber
+00:00
bukan zona waktu, ini adalah offset waktu. Apa yang terjadi dengan DST? Apakah tetap di +0 sepanjang tahun?time_zone="+00:00"
Anda mengatur zona waktu menggunakan offset dari UTC, mengingat bahwa nilai yang ditetapkan tidak pernah berubah dan bahwa UTC tidak mengikuti DST, saya dapat mengasumsikan bahwa ia tetap sama sepanjang tahun.+00:00
terlihat seperti offset sehingga agak aneh bahwa MySQL memilih untuk mewakili UTC daripada hanya menggunakan string "UTC" itu sendiri. Terimakasih atas infonya.C:\ProgramData\MySQL\MySQL Server x.x\my.ini
Bagi siapa pun yang masih memiliki masalah ini:
Bekerja untukku. Cukup tambahkan
?serverTimezone=UTC
di bagian akhir.sumber
Asia/Ho_Chi_Minh
alih-alihUTC
BTW, pertanyaannya adalah tentang mengubah zona waktu MySQL. Jadi tolong lihat jawaban @Timo. Jika Anda memiliki masalah dengan buruh pelabuhan MySQL, tambahkan lingkungan TZ dan itu akan berfungsi.SET time_zone=...
Saat Anda dapat mengonfigurasi server zona waktu untuk MySQL atau PHP:
Ingat:
Ubah sistem zona waktu. Contoh untuk Ubuntu:
Mulai ulang server atau Anda dapat me-restart Apache 2 dan MySQL:
sumber
Untuk mengaturnya untuk sesi saat ini, lakukan:
sumber
SET time_zone = 'America/Boise'
. Terima kasih atas jawabannya, James Skidmore!SET time_zone = 'UTC';
pengaturan hilang selama server restartCukup jalankan ini di server MySQL Anda:
Di mana +8: 00 akan menjadi zona waktu Anda.
sumber
@@session.time_zone
seperti yang dijelaskan dalam jawaban lain adalah rute yang jauh lebih baik.Ini berfungsi untuk saya untuk lokasi di India:
sumber
Anda dapat menentukan zona waktu default server saat Anda memulainya, lihat http://dev.mysql.com/doc/refman/5.1/en/server-options.html dan secara khusus
--default-time-zone=timezone
opsi. Anda dapat memeriksa zona waktu global dan sesi denganatur salah satu atau keduanya dengan
SET
pernyataan, & c; lihat http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html untuk lebih banyak detail.sumber
Perlu diingat, bahwa 'Negara / Zona' kadang-kadang tidak berfungsi ... Masalah ini bukan OS, versi MySQL, dan perangkat keras - saya sudah bertemu sejak FreeBSD 4 dan Slackware Linux pada tahun 2003 hingga hari ini. MySQL dari versi 3 hingga trunk sumber terbaru. Itu GANJIL, tetapi TIDAK TERJADI. Sebagai contoh:
Dan pernyataan seperti itu seharusnya berfungsi:
Tetapi Anda memiliki masalah ini:
Lihatlah subfolder di direktori informasi zona Anda, dan lihat nama file ACTUAL untuk symlink, dalam hal ini EST5EDT. Maka cobalah pernyataan ini sebagai gantinya:
Dan itu benar-benar berfungsi sebagaimana mestinya! :) Ingatlah trik ini; Saya belum melihatnya didokumentasikan dalam manual MySQL dan dokumentasi resmi. Tetapi membaca dokumentasi yang sesuai adalah hal yang harus dilakukan: dokumentasi resmi zona waktu MySQL 5.5 - dan jangan lupa memuat data zona waktu ke server Anda begitu saja (jalankan sebagai pengguna root!):
Trik nomor satu - itu harus dilakukan persis di bawah pengguna root MySQL. Itu bisa gagal atau menghasilkan hasil yang tidak berfungsi bahkan dari pengguna yang memiliki akses penuh ke database MySQL - saya melihat kesalahan sendiri.
sumber
Jika Anda menggunakan PDO:
Jika Anda menggunakan MySQLi:
Lebih lanjut tentang memformat offset di sini: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
sumber
Ini adalah pertanyaan berumur 10 tahun, tapi bagaimanapun, inilah yang berhasil untuk saya. Saya menggunakan MySQL 8.0 dengan Hibernate 5 dan SpringBoot 4.
Saya sudah mencoba jawaban yang diterima di atas tetapi tidak berhasil untuk saya, yang berhasil bagi saya adalah ini:
Jika ini membantu Anda jangan lupa untuk memperbaikinya: D
sumber
Pertanyaan kuno dengan satu saran lagi:
Jika Anda baru saja mengubah zona waktu OS, mis. Via:
... MySQL (atau MariaDB) tidak akan melihat sampai Anda me-restart layanan db:
(atau)
sumber
Jika Anda menggunakan MySql Workbench, Anda dapat mengatur ini dengan membuka tampilan administrator dan memilih tab Advanced. Bagian atas adalah "Lokalisasi" dan kotak centang pertama harus "zona waktu default". Centang kotak itu dan kemudian masukkan zona waktu yang Anda inginkan, restart server dan Anda akan baik-baik saja.
sumber
Pertama-tama untuk mencari tahu time_zone apa yang bisa Anda query
Output Anda harus serupa seperti berikut
Kemudian jika Anda ingin mengonfirmasi bahwa Anda mengatakan beberapa zona waktu seperti CDT, bukan sesuatu seperti EST, Anda dapat memeriksa jam berapa menurutnya mesin Anda berada dengan mengatakan
Jika ini bukan waktu yang Anda inginkan, Anda perlu mengubahnya ... yang perlu Anda lakukan adalah
SET time_zone = timezone_name
. Pastikan itu salah satu yang ada dalamContinent/City
format.Jika Anda berada di server bersama karena Anda memiliki layanan hosting silakan merujuk ke jawaban ini mengenai mengubah file php.ini atau file .htaccess.
sumber
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p E
dulu dan kemudianSET time_zone = timezone_name
bekerja dengan baik.Anda harus mengatur zona waktu lokasi Anda. Jadi ikuti proses di bawah ini
Buka MSQLWorkbench Anda, tulis perintah sql sederhana seperti ini;
Dan juga url Anda bisa seperti ini;
sumber
Untuk mengatur zona waktu standar di MariaDB Anda harus pergi ke file 50-server.cnf .
Kemudian Anda dapat memasukkan entri berikut di bagian mysqld.
Contoh:
Perubahan harus dilakukan melalui file konfigurasi, jika tidak server MariaDB akan mengatur ulang tabel mysql setelah restart!
sumber
Edit file konfigurasi MySQL
Gulir dan tambahkan ini ke bawah. Ubah ke zona waktu yang relevan
Mulai ulang server
sumber
Pada Windows (IIS) agar dapat MENYETEL GLOBAL time_zone = 'Europe / Helsinki' (atau apa pun) tabel deskripsi time_zone MySQL harus diisi terlebih dahulu.
Saya mengunduh ini dari tautan ini https://dev.mysql.com/downloads/timezones.html
Setelah menjalankan kueri SQL yang diunduh, saya dapat mengatur time_zone GLOBAL dan menyelesaikan masalah yang saya miliki di mana SELECT NOW NOW (); mengembalikan GMT daripada BST.
sumber
Dalam kasus saya, solusinya adalah mengatur parameter serverTimezone di pengaturan Lanjut ke nilai yang sesuai (CET untuk zona waktu saya).
Ketika saya menggunakan IntelliJ, saya menggunakan modul Database-nya. Saat menambahkan koneksi baru ke database dan setelah menambahkan semua parameter yang relevan di tab General, ada kesalahan pada tombol "Uji Koneksi". Sekali lagi, solusinya adalah mengatur parameter serverTimezone di tab Advanced.
sumber
Jika ada yang menggunakan GoDaddy Shared Hosting, Anda dapat mencoba solusi berikut, bekerja untuk saya.
Saat memulai koneksi DB, atur perintah time_zone di objek PDO saya mis:
Di mana "+05: 30" adalah TimeZone of India. Anda dapat mengubahnya sesuai kebutuhan Anda.
Setelah itu; semua proses MySQL yang terkait dengan Tanggal dan Waktu diatur dengan zona waktu yang diperlukan.
Sumber: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861
sumber