LoginSignup
2
0

More than 5 years have passed since last update.

TreasureDataで今月の1日を取得する

Last updated at Posted at 2018-04-24

概要

データ抽出で1年間とかをする場合、今月の1日を取得してそこからマイナス365日の期間を取得するようにしたかったので調べた内容を記載しておきます。

今月の1日の取得方法

下記のようにしたら取得できました。

SELECT
  TD_TIME_FORMAT(
    TD_DATE_TRUNC('month', TD_SCHEDULED_TIME()),
    'yyyy-MM-dd',
    'JST'
  )
;

結果

2018-04-01

今月1日から365日マイナスした期間を取得する

SELECT
  -- 開始日(今月1日からマイナス365日した日付)
  TD_TIME_FORMAT(
    TD_TIME_ADD(TD_DATE_TRUNC('month', TD_SCHEDULED_TIME()), '-365d'),
    'yyyy-MM-dd',
    'JST'
  ) AS s,
  -- 終了日(今月1日)
  TD_TIME_FORMAT(
    TD_DATE_TRUNC('month', TD_SCHEDULED_TIME()),
    'yyyy-MM-dd',
    'JST'
  ) AS e
;

結果

| s          | e          |
| 2017-04-01 | 2018-04-01 |

先月の末日から365日マイナスした期間をWHERE条件に指定する

「2018/04/24 PM12:00」で実行すると 「2017-04-01 <= time < 2018-04-01」の期間が取得できます。
※ TD_TIME_RANGEは、開始日は含むが終了日は含まないため、今月1日を指定すると先月末日までとなる。

SELECT
  MIN(time) AS min,
  MAX(time) AS max
FROM
  hoge
WHERE
  TD_TIME_RANGE(
    -- 判定対象カラム
    time, 
    -- 開始日(今月1日からマイナス365日した日付)
    TD_TIME_ADD(TD_DATE_TRUNC('month', TD_SCHEDULED_TIME()), '-365d'),
    -- 終了日(今月1日) ※期間には含まれない
    TD_DATE_TRUNC('month', TD_SCHEDULED_TIME())
  )
;

以上です。

参考サイト

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0