Saya tahu ini terdengar bodoh, tetapi saat saya menggunakannya
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time
itu mengeluarkan NULL. Saya menggunakan MySQL Workbench di Ubuntu 12.04 64 bit, dan berfungsi di laptop / os saya yang lain (juga menggunakan MySQL Workbench).
mysql
ubuntu-12.04
convert-tz
mohur
sumber
sumber
Saya menemukan utas ini setelah menghabiskan beberapa waktu mencoba mencari tahu mengapa setelah menjalankan perintah dalam jawaban yang diterima (yang sama di situs dev MySQL) perintah tidak dapat mengonversi antar zona waktu seperti
Ternyata di OS X ada dua file yang menyebabkan masalah:
/usr/share/zoneinfo/Factory
dan/usr/share/zoneinfo/+VERSION
.Cara mengatasinya ... untuk sementara memindahkan file-file ini ke lokasi berbeda seperti
/usr/share/zoneinfo/.bak/
memungkinkan untuk perintahuntuk mengisi semua informasi zona waktu yang diharapkan.
Ini mungkin atau mungkin bukan bug dalam versi MySQL yang saya instal:
Saya juga beroperasi di
STRICT_MODE
.Bagaimanapun, saya harap ini menghemat beberapa sakit kepala bagi siapa pun yang mencari perbaikan.
sumber
Selain dari lingkungan Windows, Anda dapat mengatur Zona Waktu dengan
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Di lingkungan Windows ,
1. download Time zone description tables from
http://dev.mysql.com/downloads/timezones.html2. Stop MySQL server
3. Put then inside Mysql installation package
(mis. C: \ Program Files \ MySQL \ data \ mysql) `4. Start MySQL server
..Pekerjaan Anda selesai ..
Jika masih Anda mendapatkan
NULL
untukCONVERT_TZ
Unduh tabel database ini dan masukkan ke database mysql http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.htmlSekarang masalah Anda akan terpecahkan .. :)
sumber
Jika Anda menggunakan MySql di Windows, Anda harus memuat data zona waktu ke skema mysql. Ini adalah CARA yang bagus: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
Jika Anda tidak melakukan ini, fungsi CONVERT_TZ tidak akan mengenali zona waktu input Anda (contoh: 'UTC', 'Asia / Jakarta'), dan hanya akan mengembalikan NULL.
sumber
MAMP PRO
Terminal
cd /usr/share/zoneinfo/
sudo mv +VERSION ~/Desktop
cd /applications/MAMP/Library/bin
sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
sumber
1) Di Windows, tidak ada folder data sekarang
C:\Program Files\MySQL\
seperti di jawaban lain.2) Dalam hal ini, cari
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql
. Umumnya folder ini tersembunyi dan Anda tidak akan melihatnyaC:\ProgramData\
beberapa kali.3) Ubah Pengaturan di tab Tampilan untuk melihat file dan Folder Tersembunyi seperti yang dijelaskan di sini https://irch.info/index.php?pg=kb.page&id=133
4) Hentikan layanan MySQL dengan mencari "layanan" di tombol Start Windows.
5) Kemudian unzip timezone_2017c_posix.zip lalu salin file di dalamnya (salin file secara langsung, jangan salin seluruh folder itu sendiri), dan tempel
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6) Untuk MySQL 5.7, timezone_2017c_posix.zip hanya akan memberikan file .sql setelah unzip dan mungkin tidak menyelesaikan masalah. Jadi lanjutkan dan unduh file zip untuk 5.6 bahkan jika Anda menjalankan MySQL 5.7 dan salin file tersebut ke
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\
7) Mulai ulang server MySQL. Untuk memeriksa apakah CONVERT_TZ () berfungsi, jalankan kueri sql ini.
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta');
dan periksa keluaran non-null.sumber
jika Anda mendapatkan kesalahan
data too long for column 'abbreviation' at row 1
maka lihat: https://bugs.mysql.com/bug.php?id=68861perbaikannya akan menjalankan berikut ini
ini akan menambahkan baris untuk menonaktifkan mode mysql dan memungkinkan mysql untuk memasukkan data yang terpotong ini karena bug mysql di mana mysql akan menambahkan karakter null di bagian akhir (sesuai dengan tautan di atas)
sumber
Ini adalah langkah-langkah untuk membuatnya berfungsi jika Anda berada di windows dan menggunakan MySQL 5.7.
mysql -u root -p password
.use mysql
untuk memilih MySQL DB.Setelah berhasil menyelesaikan, Anda harus dapat menggunakan
CONVERT_TZ
dan fungsi zona waktu lainnya.sumber
Di Mac OS Catalina saat menggunakan XAMPP,
Buka folder / Applications / XAMPP / xamppfiles / bin di Terminal lalu jalankan perintah berikut.
./mysql_tzinfo_to_sql / usr / share / zoneinfo | sed -e "s / Zona waktu lokal harus disetel - lihat halaman manual zic / local /" | ./mysql -u root mysql
Ini berhasil untuk saya.
sumber