日時指定はどの条件でクエリを叩くときも使うけれど、毎回忘れて調べているのでメモ
Google BigQuery
log20170420
みたいに毎日のログが入っているとする
ref: https://cloud.google.com/bigquery/docs/wildcard-tables
昨日から一週間分のデータを解析したい
BigQuery
#standardSQL
SELECT
*
FROM
`dataset.log*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 7 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 1 DAY))
;
Treasure Data Hive Query
ref: https://docs.treasuredata.com/articles/udfs
昨日から一週間分のデータを解析したい
TD_SCHEDULED_TIME()
はNOW()
と違ってスケジューラーをセットした時間であることがミソ
TD_HiveQuery
SELECT
*
TD_TIME_FORMAT(time,
'yyyy-MM-dd',
'JST') AS date
FROM
log
WHERE
TD_TIME_RANGE(
time,
TD_TIME_ADD(
TD_DATE_TRUNC('day', TD_SCHEDULED_TIME(), 'JST'),
'-7d',
'JST'
),
TD_TIME_ADD(
TD_DATE_TRUNC('day', TD_SCHEDULED_TIME(), 'JST'),
'-1d',
'JST'
),
'JST'
)