2011-08-09 16 views
0

私のデータベースには、BIGINTのUTC値として時間を保存しています。UTC時刻文字列をUnix時刻に変換する

私のテストデータのSQLダンプでは、読みやすさのためにUTCの時間を見たいと思います。しかし、MySQLのunix_timestamp関数は、避けようとしている現地の時間帯の時間が必要です。

私は周りを見回していると私はUNIXタイムスタンプにUTC時刻文字列に変換する見つけた唯一の方法は、この式を使っている:

SELECT unix_timestamp(CONVERT_TZ('2011-08-08 06:00:00','UTC',@@global.time_zone))

がこれを行うには良い方法はありますが?

答えて

1

bigintの代わりにタイムスタンプとして保存した場合は、タイムゾーンを設定するだけで自動的に発生します。

また、私はあなたがしていることを本当に理解していません。あなたはbigint列が正しいのでunixtimeを保存していますか?だから私はunix_timestamp()機能を使用している理由を知ることはできません。これはTOをunixtimeに変換するものであり、それを変換するものではありません。

私は、これは何が必要だと思い:

SET time_zone = '+0:00'; 
SELECT FROM_UNIXTIME(col) FROM table; 
+0

私のデータは、Unixのタイムスタンプとして来て、それがBIGINTとしてそれを保存するために理にかなっているように、Unixのタイムスタンプとして出て行きます。私がunix_timestampを使う理由は、データベースに入る日付を読むことができるからです。さもなければ、私のテストデータは、私が簡単に読むことができないunixタイムスタンプで盛り込まれています。 – Frederik

+0

いいえ、そうではありません。それをタイムスタンプとして保存するのが理にかなっています。 unix_timestampは* TO *をunix時間(数値)に変換します。 'from_unixtime()'を意味しますか?あなたがしなければならないのは、現在のタイムゾーンをutcに設定するだけなので、うまくいくでしょう。そのタイムスタンプの上に自動的に人間が読める日付に変換します。 (数字を+0にして数字に変換してください) – Ariel

+0

まだ数字を数字として保存していますが、これは変更されません。しかし、私のテストコードでは、それらをUTCの日付/時刻文字列として見たいと思っています。あなたはこの変換を行う方法を知っていますか(データベースにUTCを設定せずに、私はそれを制御できません) – Frederik