0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Redshiftでよく使う「先月月初」「今月月初」をユーザー定義関数(UDF)に置き換えてみた

Posted at

はじめに

RedshiftのUDFを使ったことがなかったのでその備忘録になります。

シチュエーション例

Redshiftで、先月のデータを取得したい、みたいな要件が多々あります。
でも毎回先月月初、今月月初を書くのが大変。

/**
 * 先月生成されたデータを取得
 */
SELECT * FROM table_name
WHERE
     created_at >= DATE_TRUNC('month',ADD_MONTHS(CONVERT_TIMEZONE('JST', GETDATE()), -1)) -- 先月月初から
AND  created_at < DATE_TRUNC('month',CONVERT_TIMEZONE('JST', GETDATE())) -- 今月月初未満

「先月月初」「今月月初」みたいなよく使う定義を
ユーザー定義関数(UDF)にしてみたらどうかな...と思いやってみます

対応

今月月初

CREATE FUNCTION f_first_day_of_this_month ()
  RETURNS datetime
STABLE
AS $$
  SELECT DATE_TRUNC('month',CONVERT_TIMEZONE('JST', GETDATE()))
$$ LANGUAGE sql;  

先月月初

CREATE FUNCTION f_first_day_of_last_month ()
  RETURNS datetime
STABLE
AS $$
  SELECT DATE_TRUNC('month',ADD_MONTHS(CONVERT_TIMEZONE('JST', GETDATE()), -1))
$$ LANGUAGE sql;  

使用例

/**
 * 先月生成されたデータを取得
 */
SELECT * FROM table_name
WHERE created_at >= f_first_day_of_last_month()
AND created_at < f_first_day_of_this_month()

まとめ

UDFでちょっとだけ楽になりました。
ただ、、、僕自身が使い慣れていないので今後活用していくかは様子を見ていきます。

文献

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?