2010-12-28 22 views

答えて

2

LOCALTIMESTAMP()はNOW()の同義語です。だからあなたが本当に求めているのは、現在の時刻をGMTに変換してから、dbに保存するためのunixタイムスタンプに変換する方法です。だから、これは動作します:よう

SELECT UNIX_TIMESTAMP(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')); 

をさておき、それはUNIXタイムスタンプではなく、データベースの日付と時刻の列を使用することが常により良いです。クエリを実行して結果を表示するのがはるかに簡単になります。

更新:あなたがあなたの考えを得ていると確信していますか? UNIX_TIMESTAMP returns a UTC based seconds since the UNIX epochMySQL DateTime typeは返されません。実際のUTC DateTimeインスタンスを使用している場合は、データベースのDateTimeカラムに直接入れることができ、仲介者としてUNIX_TIMESTAMPを使用する必要はありません。あなたは実際にどのタイプのものが現地時間にありますか?

+0

私は自分のテーブルにタイムスタンプを保存していません。 UNIX_TIMESTAMP()は、テーブルのdatetimeカラムに格納するdatetimeを返します。私はutc datetimeからunixタイムスタンプを取得する方法を知っています。 – Emmett

+3

全く投票しませんでしたが、DBのエポックタイムスタンプは、私が働いている多くのスキーマのための多数の日付算術および管理の問題を解決しました。私は必ずしも彼らから恥ずかしがりません。 – Xailor

関連する問題