トレジャーデータ で高速検索を行う場合は、

パーティションの切られている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))
おすすめの記事