UTCまでの秒単位のオフセットがあります。データベースに保存されているすべてのタイムスタンプはUTCであり、選択クエリ中にオフセットを適用する方法、
mysql_query("SELECT * FROM table WHERE unix_timestamp=unix_timestamp with offset applied");
mysql_query("INSERT INTO table (unix_timestamp) VALUES(UNIX_TIMESTAMP())");
UTC時刻でデータベースに挿入し、現地時間で取得したいと思います。
PHPの場合:
date_default_timezone_set('UTC');
$user_timezone_offset=-7200; // -2
selectのmysqlのランタイムをunix_timestampフィールド$user_timezone_offsetに差し引くことはできますか?
明らかに必要なものであるUTCに挿入していますが、ユーザーの現地時間で選択するには、データベースに保存されているタイムスタンプにオフセットを適用する必要があります。
編集:私はちょうどこれに出くわしました:
$user_timezone_offset="-2:00";
FROM_UNIXTIME(CONVERT_TZ(unix_timestamp,'+00:00','$user_timezone_offset'))
それをselectクエリに適用して、unix_timestampの選択をselect内で比較するために変換し、結果もphpのfetch_array用に変更する方法を知る必要があります。
これが解決策のようです:
SELECT *, Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset')) as unix_timestamp
実際、これには問題があります-
mysql_fetch_array($result){ $row['unix_timestamp']; }
チェックしながら変換されます
WHERE unix_timestamp=value //assuming unix_timestamp
選択時に変換されます-そこでは変換されず、別の
Unix_Timestamp(CONVERT_TZ(FROM_UNIXTIME(unix_timestamp), '+00:00', '$user_timezone_offset'))
変換された値に対してチェックが行われるたびに、unix_timestampが「変換」されるように呼び出す必要があります。