トレジャーデータ で高速検索を行う場合は、
パーティションの切られているtimeを利用する。また、日付関数はUDFが用意されており、
それを使うことで効率よく処理を行える。
対象日付のレコードを抽出する
SELECT * FROM TABLE1 WHERE TD_TIME_RANGE(time, TD_TIME_ADD(TD_SCHEDULED_TIME(), '-1d'), TD_SCHEDULED_TIME(), 'jst')
対象範囲日付分のデータを取得するパターン1
SELECT * FROM TABLE1 WHERE TD_TIME_RANGE ( time , TD_TIME_FORMAT(TD_TIME_ADD(TD_SCHEDULED_TIME(), '-1d'), 'yyyy-MM-dd 00:00:00', 'JST') , TD_TIME_FORMAT(TD_SCHEDULED_TIME(), 'yyyy-MM-dd 00:00:00', 'JST') , 'JST' )
対象範囲日付分のデータを取得するパターン2
SELECT * FROM TABLE1 WHERE TD_TIME_RANGE ( time , TD_TIME_ADD(TD_TIME_PARSE(TD_TIME_FORMAT(TD_SCHEDULED_TIME(),'yyyy-MM-dd')), '-5d', 'JST') , TD_TIME_ADD(TD_TIME_PARSE(TD_TIME_FORMAT(TD_SCHEDULED_TIME(),'yyyy-MM-dd')), '-4d', 'JST') , 'JST' )
対象範囲の日付を明示的に指定する方法
SELECT * FROM TABLE1 WHERE TD_TIME_RANGE(time,'2019-01-01 00:00:00','2019-02-01 01:00:00','JST')
日付の差分を取得する
-- DATE型かTIMESTAMP型しかDATE_DIFFで使えないのでCAST出方変換を行う必要がある SELECT * FROM TABLE1 WHERE DATE_DIFF('day', CAST(created_at AS TIMESTAMP), CAST(updated_at AS TIMESTAMP))