2

定期的に行う場合:

select convert_tz(now(), "UTC", "Europe/London")

MariaDBサーバー上で直接、以下を生成します。

+-------------------------------------------+
| convert_tz(now(), "UTC", "Europe/London") |
+-------------------------------------------+
| 2013-03-07 16:01:32                       |
+-------------------------------------------+

しかし、ルビー1.8.7または1.9.3幅を介して行われた場合:

q = 'select convert_tz(now(), "UTC", "Europe/London")'
ActiveRecord::Base.connection.select_all(q)

それは生成します:

"convert_tz(now(), \"UTC\", \"Europe/London\")" => nil

MySQLセットアップに対して同じことを行います。

q = 'select convert_tz(now(), "UTC", "Europe/London")'
ActiveRecord::Base.connection.select_all(q)

結果:

"convert_tz(now(), \"UTC\", \"Europe/London\")" => "2013-03-07 16:05:14"

現在MySQLWorkbenchでテストされており、同じ悪い結果がそこで発生し、変換された時間の代わりにnullが返されます。

だから私はそれがMariaDBの何かだと思いますか?

4

2 に答える 2

1

タイムゾーン情報が欠落している可能性があります。mysql_tzinfo_to_sqlこれは、ユーティリティを使用するか、mysqldevサイトからテーブルをダウンロードすることで生成できます。

MacまたはLinuxを使用している場合は、次のように機能する可能性があります(zoneinfoの場所を更新する必要がある場合があります)

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -Dmysql
于 2014-03-27T16:41:41.310 に答える
0

5.5.29にアップグレード-MariaDBで問題が解決したので、5.5.28に関連していると思います。

于 2013-03-08T12:22:49.810 に答える