116

これはばかげているように聞こえますが、使用すると

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time

NULL を出力します。私は Ubuntu 12.04 64 ビットで MySQL Workbench を使用していますが、他のラップトップ/OS でも動作します (MySQL Workbench も使用しています)。

4

9 に答える 9

218

これは、タイム ゾーン テーブルを mysql にロードしていない場合に発生します。

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

mysqlMySQL 固有の構成データを保持する組み込みデータベースの名前です。

于 2013-01-22T08:37:38.193 に答える
3

マンププロ

  1. 開けるTerminal
  2. cd /usr/share/zoneinfo/
  3. sudo mv +VERSION ~/Desktop
  4. cd /applications/MAMP/Library/bin
  5. sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
  6. sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
于 2016-11-14T05:44:23.410 に答える
2

Windows で MySql を使用している場合は、タイムゾーン データを mysql スキーマにロードする必要があります。ここに良いHOWTOがあります:http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

これを行わないと、関数 CONVERT_TZ は入力タイムゾーン (例: 'UTC','Asia/Jakarta') を認識せず、単に NULL を返します。

于 2013-02-27T03:28:51.997 に答える
1
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

エラーが発生した場合は、httpsdata too long for column 'abbreviation' at row 1 ://bugs.mysql.com/bug.php?id=68861 を参照してください。

修正は、次を実行することです

これにより、mysql モードを無効にし、mysql が切り捨てられたデータを挿入できるようにする行が追加されます。

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
(if the above gives error "data too long for column 'abbreviation' at row 1")
mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/zut.sql

echo "SET SESSION SQL_MODE = '';" > /tmp/mysql_tzinfo_to.sql
cat /tmp/zut.sql >> /tmp/mysql_tzinfo_to.sql

mysql --defaults-file=/etc/mysql/my.cnf --user=verifiedscratch -p mysql < /tmp/mysql_tzinfo_to.sql
于 2016-02-23T14:07:05.200 に答える
0

Mac OS Catalina で XAMPP を使用する場合、

ターミナルの /Applications/XAMPP/xamppfiles/bin フォルダーに移動し、以下を実行します。

./mysql_tzinfo_to_sql /usr/share/zoneinfo | sed -e "s/ローカル タイム ゾーンを設定する必要があります。zic のマニュアル ページを参照してください/local/" | ./mysql -u root mysql

これは私にとってはうまくいきました。

于 2019-11-01T12:34:49.643 に答える