2009-03-31 24 views
1

読者がそれを参照できる場合、このスレッドから回答を得てから再入力することができます:link text 私は、(MySQLデータベース内で)タイムゾーンコードを単独で更新する必要があるuser_timezone列内に既に存在するものに応じて、olsenコード(例えば、 "Europe/London"など)への追加(例えば、10+、1-など)それについて何が一番簡単なのでしょうか?大規模なMySQLアップデートクエリ

いずれのアイデアも非常に高く評価されます。

答えて

1

Olsonデータベース(ヨーロッパ/ソフィア、ヨーロッパ/リガ、アフリカ/カイロなど)の多くのエントリにタイムゾーンオフセット(たとえばUTC + 2)が対応している場合、オフセット先-Olson-code対応。 これらの対応を記述するテーブルを作成し、それを使用して更新ステートメントを作成します。

+0

これは答えのようです。 ありがとうございます:) – Lea

0

あなたが作業できるクラスはDateTimeZoneですが、何が得られるのは時間単位のオフセットではなく分単位(IIRC)です。

+0

こんにちは、私はまだあなたが意味することを理解していない、申し訳ありません、私はまだ学んでいます。より多くのことを意味するものをさらに拡大できますか?私はデータベースを更新するためにsqlクエリを実行する必要があるというアイデアを持っていますが、その前に、データをプルする必要があるかもしれないと思います。更新クエリ中に比較するために有効にする必要があるかもしれません。 – Lea

+0

持っていて、あなたがそれから出ようとしているもの。 :D –

1

残念ながら、ユーザーがいるゾーンをUTCオフセットから知る方法がありません。 Wikipedia's list of timezonesを見ると、多くのゾーンが同じ時間オフセットを共有していることに気付くでしょう。ヨーロッパ/サラエボとヨーロッパ/ブリュッセル

+0

こんにちは、Ok。 BACはこれが既存のデータベースに基づいていると読んでいましたか?さて、データベースを作成したスクリプトは、オフセットコードを使用して何らかの方法でタイムゾーンをユーザーに割り当てました。私はスクリプト内でそれを見つけることはできません。彼らがどのようにこれを達成したかについてのあなたの考えは何ですか?ありがとうございました – Lea

+0

私はローカル時間を計算するためのオフセットを保存して詳細を投げ捨てたと思います。ヨーロッパ/ロンドンは彼らが役に立たないと思ったので。データが保存されなかった場合、残念ながらそれは永遠に消え去ってしまいました。私の提案は、次のログイン時にユーザに –

+0

のタイムゾーンを再度指定し、今度はオールソンを保存するように求めることです。あなたが自分の経験やサイトの質を向上させるのに役立つと説明すれば、それはマイナーな不都合なことであると確信しています(そして単なる一回限りです)。 –

0

mysqlのように見えるの値をリマップする方法:表示されるだけでは何もしないままにしながら、その上で「newval1」から「oldval1」との出現を変更します

UPDATE `sometable` 
SET `somecolumn` = IFNULL(ELT(FIELD(`somecolumn`, 
    'oldval1', 'oldval2', 'oldval3'), 
    'newval1', 'newval2', 'newval3'), 
    `somecolumn` 
); 

'oldval'リストに表示されます。

+0

ありがとう。私は将来の参考にしておくつもりです。 よろしく! – Lea

関連する問題