60

MySqlデータベースを使用したクエリの1つでこのWhere条件を使用しています。問題は、テーブルに1つの表示時間列がありますが、そのテーブル列にはUTC時間のデータが表示され、その表示時間列を現地時間に変換したいということです。 Zone.soクエリ自体からこの機能を提供するにはどうすればよいですか。

私は物事をくすくす笑いました、そしてそれによって私はそのような何かがSELECT CONVERT_TZ()それのために働くことを知っていました。しかしそれは私のために働きません。

これが、表示時間をローカルタイムゾーンに変換する必要があるクエリです...誰かが私を案内してくれますか?

WHERE displaytime >= '2012-12-01 00:00:00'
  AND displaytime <='2013-02-22 23:59:59'
  AND ct.organizationId IN (
    SELECT t.organizationId
      FROM organization_ AS t
      JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%')
     WHERE p.organizationId = 10707

ここに画像の説明を入力してください サンプルデータ

ここに画像の説明を入力してください

4

3 に答える 3

128

SELECT CONVERT_TZ()はそのために機能しますが、私には機能しません。

なぜ、どのようなエラーが発生しますか?

SELECT CONVERT_TZ(displaytime,'GMT','MET');

列タイプがタイムスタンプまたは日付の場合は機能するはずです

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_convert-tz

これがどのように機能するかをテストします。

SELECT CONVERT_TZ(a_ad_display.displaytime,'+00:00','+04:00');

タイムゾーンテーブルを確認してください

SELECT * FROM mysql.time_zone;
SELECT * FROM mysql.time_zone_name;

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

これらのテーブルが空の場合は、タイムゾーンテーブルが初期化されていません。上記のリンクによると、mysql_tzinfo_to_sqlプログラムを使用してタイムゾーンテーブルを読み込むことができます。これを試してみてください

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo

または、機能しない場合は、続きを読む:http ://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

于 2013-02-22T06:20:09.437 に答える
29

私の場合、サーバーでタイムゾーンが利用できない場合、これはうまく機能します。

SELECT CONVERT_TZ(`date_field`,'+00:00',@@global.time_zone) FROM `table`

注:global.time_zoneはサーバーのタイムゾーンを使用します。希望のタイムゾーンがあることを確認する必要があります。

于 2014-06-30T11:05:07.450 に答える
13
 select convert_tz(now(),@@session.time_zone,'+05:30')

'+05:30'を目的のタイムゾーンに置き換えます。ここを参照してください-https://stackoverflow.com/a/3984412/2359994

希望の時間形式にフォーマットするには、例:

 select DATE_FORMAT(convert_tz(now(),@@session.time_zone,'+05:30') ,'%b %d %Y %h:%i:%s %p') 

これに似たものになります->2014年12月17日10:39:56AM

于 2014-11-03T10:06:58.610 に答える