これが不明確な場合はご容赦ください。しかし、頭の中にあることを紙に書き留めるのに苦労しています。
シナリオ:
さまざまなジョブをテーブルに格納します。これらはすべて、UTC タイム ゾーンに設定された DATETIME を使用してタイムスタンプが付けられます。
システム時間をユーザーの現地時間に転記できるように、ユーザーはプリファレンスでタイムゾーンを設定している場合があります。
ここで、ユーザーが 2012 年 10 月 25 日 (ローカル ユーザー時間) に入力されたすべてのジョブを選択するとします。
+--------------------------------------+------------+---------+---------------------+
| id | project_id | amount | created |
+--------------------------------------+------------+---------+---------------------+
| 50889ba5-77b4-41e1-a942-1dea0ab761f6 | 15076850 | 50.00 | 2012-10-25 01:53:41 |
| 5088b9a3-8110-446e-81c8-75da341f3f95 | 15076850 | 2000.00 | 2012-10-25 04:01:39 |
| 5088c852-d434-41e6-ba5d-27560ab761f6 | 15076850 | 100.00 | 2012-10-25 05:04:18 |
| 50892a3b-ad9c-4a32-aebf-384c0ab761f6 | 15076850 | 500.00 | 2012-10-25 12:02:03 |
| 50893098-6b9c-4028-9a87-3eb20ab761f6 | 15076850 | 25.00 | 2012-10-25 12:29:12 |
| 50894b10-d260-4f61-8eb9-1d190ab761f6 | 15076850 | 25.00 | 2012-10-25 14:22:08 |
| 50895129-48c8-4bb4-928f-483b341f3f95 | 15076850 | 25.00 | 2012-10-25 14:48:09 |
| 50896019-7144-4e74-8037-4160341f3f95 | 15076850 | 50.00 | 2012-10-25 15:51:53 |
+--------------------------------------+------------+---------+---------------------+
8 rows in set (0.00 sec)
このユーザーが米国東部 (EST) にいて、この表の時刻が UTC である場合、表の最初の 2 行の結果は 10 月 24 日となります。基本的に、ユーザーが EST の場合、最初の 2 行を除外します。
私は の使用を実験してきましたがDateTime()
、これは DST の終わり (2012 年 11 月 4 日) にまたがるため、行き詰まっています。10 月 25 日の日付を選択すると、DST がアクティブになるため、ユーザーの現地時間が UTC -0400 として表示されます。ジョブが終了すると、(UTC -0500) 以降になります。
私はこれを機能させる方法に完全に行き詰まっています。