MySQLは、通常のselectステートメントで保存されたUTC時刻をローカルタイムゾーン時刻に直接変換できますか?
タイムスタンプ(UTC)のデータがあるとします。
CREATE TABLE `SomeDateTable` (
`id` int(11) NOT NULL auto_increment,
`value` float NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
)
それから私が
"select value, date from SomeDateTable";
もちろん、保存されているUTC形式のようにすべての日付を取得します。
しかし、それらを別のタイムゾーン(DSTを使用)に置きたいとしましょう。次に、選択したクエリに魔法を追加して、選択したタイムゾーンのすべての日付を取得できますか?
"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";
または、いくつかのphpコードのように、上の他のレイヤーでこれを行う必要がありますか?(ほとんどの人がこの問題を解決した方法のようです)。
MySQLのインストールでCONVERT_TZを使用できる場合、それは非常にクリーンなソリューションです。この例は、その使用方法を示しています。
SELECT CONVERT_TZ( '2010-01-01 12:00', 'UTC', 'Europe/Stockholm' )
ただし、一部のMySQLインストールにはこの機能がないため、これが適切な方法かどうかはわかりません。注意して使用してください。