各行にタイムスタンプがあるテーブルがあります。タイムスタンプはUNIXタイムスタンプです。このデータを使用してレポートを作成したいのですが、このデータを特定の期間でグループ化する必要があります(今のところ、1日としましょう:86400秒)。これは、タイムスタンプをフローリングすることで実現できます。
mysql> set time_zone='+00:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select NOW(), FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP()/86400)*86400);
+---------------------+----------------------------------------------------+
| NOW() | FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP()/86400)*86400) |
+---------------------+----------------------------------------------------+
| 2013-01-17 06:06:37 | 2013-01-17 00:00:00 |
+---------------------+----------------------------------------------------+
1 row in set (0.01 sec)
これにより、次のデータロールアップを実行できます。
select FROM_UNIXTIME(FLOOR(timestamp/86400)*86400) groupts, count(some_id) from table group by groupts order by groupts;
これらはすべて完全に機能します。次に、データを他のレポートと比較したいと思います。ここでは、特定のタイムゾーン、たとえばESTのデータしかありません。
残念ながら(そして明らかに)、フローリングはもう機能しません:
mysql> set time_zone='-05:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select NOW(), FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP()/86400)*86400);
+---------------------+----------------------------------------------------+
| NOW() | FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP()/86400)*86400) |
+---------------------+----------------------------------------------------+
| 2013-01-17 01:10:38 | 2013-01-16 19:00:00 |
+---------------------+----------------------------------------------------+
1 row in set (0.00 sec)
これが最終的に私の質問につながります:特定のタイムゾーンに基づいてタイムスタンプをフロア化する方法はありますか?つまり、フローリングは、そのタイムゾーンの00:00〜23:59のすべての値が特定のグループに含まれるようにしますか?
ありがとう!