unix timestamp + time zone.

UNIXタイムスタンプについて。 ちょっと思い違いをしていたのでメモ。

UNIXタイムスタンプは、1970年1月1日 0時0分0秒(GMT 世界標準時刻)からの通算秒。

MySQLのUNIX_TIMESTAMP()は、指定時刻に対して↑からの通算秒を返す。

time_zoneの設定をもとにしてGMT標準時刻からの差分を判断している模様。

JSTで、UNIX_TIMESTAMP(’2008-08-16 20:00:00′)をかますと2008-08-16 11:00:00までの通算秒が返る。

+01:00 でUNIX_TIMESTAMP(’2008-08-16 20:00:00′)をかますと2008-08-16 19:00:00までの通算秒が返る。

MySQLのタイムゾーンを変更するには、set time_zone=”+01:00″ など。

now()でMySQLに設定されているタイムゾーンの現在時刻(Y-m-d H:i:s)が入る。

UTC_TIMESTAMP()で世界標準の現在時刻(Y-m-d H:i:s)が入る。