日付別にテーブルを作ってデータを入れている場合に、
1日分集計したいけど、1日の切り替わりが 0時じゃ無い時とかに...
SELECT * FROM
(TABLE_DATE_RANGE([prefix]_,TIMESTAMP('[Y-m-d]'), TIMESTAMP('[Y-m-d]')))
where
createdAt >= DATE_ADD(TIMESTAMP("[Y-m-d H:i:s]"), -9, "HOUR") and
createdAt <= DATE_ADD(TIMESTAMP("[Y-m-d H:i:s]"), -9, "HOUR");
- TABLE_DATE_RANGE
- 第二引数に開始年月日、第三引数に終了年月日を入れて範囲を設定。
- タイムスタンプに変換する必要があるため、TIMESTAMP 通してます。
- 第一引数は、テーブル名にあたります。
-
hoge_2018-3-23 〜 hoge_2018-3-24
みたいなテーブル指定になります...
- 第二引数に開始年月日、第三引数に終了年月日を入れて範囲を設定。
- createdAt について
- DATE_ADD を通し -9時間しているのは、bigquery は UTC で insert されるためです。
- 時間指定自体は日本時間のが分かりやすいのでそれで指定し 9時間の差分を DATE_ADD で埋めています
- JST は UTC の +9時間のため、データが入るとき -9時間されているので、DATE_ADD では -9時間で指定してます。