アプリ版:「スタンプのみでお礼する」機能のリリースについて

MySQL5で、
TIMESTAMP型のカラムに格納されるのは、UTCでしょうか。
それともローカルタイムゾーンなのでしょうか?
あるいは、設定による、のでしょうか?

>TIMESTAMP カラムの値は、ストレージでは現在のタイム ゾーンから UTC へ、読み出しでは UTC からカレントのタイム ゾーンに変換します。
http://dev.mysql.com/doc/refman/5.1/ja/time-zone …
と書いてあったのを見て、TIMESTAMP型のカラムに格納されるのは、UTC(日本時間-9)だ、と思ったのですが、
実際にカラムの中を確認してみると、その時点の日本時間が格納されています。

>TIMESTAMP 値は、現在のタイムゾーンから変換されて格納され、また検索された時に現在のタイムゾーンに再変換されながら、UTCに格納されます。
http://dev.mysql.com/doc/refman/5.1/ja/timestamp …
こちらでも、「UTCに格納されます」って書かれているのですが、
これは、「現在のタイムゾーンをそれぞれの接続ごとに設定した場合」に限っての話なのでしょうか?

それとも、ストレージでは、って書かれているので、
ストレージのことが絡んでいるのでしょうか?(ストレージって何のことですか)

A 回答 (2件)

> 実際にカラムの中を確認してみると、その時点の日本時間が格納されています。


これはどのように確認したのでしょうか。単純にSQLを実行しただけでは、mysqlが内部的にUTCをPCのシステム設定を読み取って変換しているか分かりません。
ストレージエンジンによるかどうかは分かりませんが、少なくともMyisamのテーブルデータのファイルを16進ダンプで見る限りではUTCでの1970年からの秒数(エポック時)を格納しているように見えるのですが。

この回答への補足

回答ありがとうございます。

>これはどのように確認したのでしょうか。
SQLを実行しただけです

そもそも、基本的なことが分かっていないのですが、

>内部的にUTCをPCのシステム設定を読み取って変換している
っていうのは、具体的に、どの時点で何をどうしているのでしょうか?

補足日時:2011/12/05 21:22
    • good
    • 0

>>内部的にUTCをPCのシステム設定を読み取って変換している


>っていうのは、具体的に、どの時点で何をどうしているのでしょうか?

WindowsでもLinuxでもOSの設定にタイムゾーン情報があります。mysqlサーバーがクライアントからの問い合わせがあった時点でUTCの時刻情報にタイムゾーン情報を加えてクライアントに返していると思います。

追記するとmyisamの16進ダンプですが、どうやらファイルヘッダーにファイル作成のエポック時を設けて、各レコードにはそれから経過秒数を記録しているようです。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

大変参考になりましたー

お礼日時:2011/12/31 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す