LoginSignup
1
1

More than 5 years have passed since last update.

Db2:日付から異なる値を戻す関数(THIS_WEEK,THIS_MONTH,NEXT_WEEK,NEXT_MONTH 他)

Posted at

Db2 11.1の新機能から、日付がらみの新しい組込み関数の紹介を続けます。

Db2 11.1では、日付・時刻操作に関して、Oracle, Netteza, PostgreSQL, MySQLなど、他のデータベース製品で使用されるSQLも簡単にDb2環境で実行できるよう、SQLの互換性がより強化されています。

参考(前回までの日付がらみの新しい組込み関数に関する記事)
Db2:日付,時刻の操作を行う関数(NOW,EXTRACT)
Db2:日付,時刻の操作を行う関数(DATE_PART)
Db2:日付,時刻の操作を行う関数(DATE_TRUNC)
Db2:その月から特定の日を取り出す関数(DAYOFMONTH,FIRST_DAY,DAYS_TO_END_OF_MONTH)
Db2:日付操作で任意の日を加える(ADD_DAYS,ADD_MONTHS 他)

日付から異なる値を戻す関数

以下の4つの関数は、日付からそれぞれ異なる値を戻します。

THIS_WEEK - 指定した日付の週の最初の日を戻す
THIS_MONTH - 指定した日付の月の初日を戻す
THIS_QUARTER - 指定した日付の四半期の最初の日を戻す
THIS_YEAR - 指定した日付の年の最初の日を戻す

Db2のSAMPLEデータベースに接続して、実行してみましょう。

this_week.sqlというテキストファイルにSQLを書いて保管します。

(this_week.sql)

WITH DATES(FUNCTION, RESULT) AS 
  ( 
  VALUES
    ('CURRENT DATE   ',NOW),
    ('THIS_WEEK      ',THIS_WEEK(NOW)),
    ('THIS_MONTH     ',THIS_MONTH(NOW)),
    ('THIS_QUARTER   ',THIS_QUARTER(NOW)),
    ('THIS_YEAR      ',THIS_YEAR(NOW))
  )
SELECT * FROM DATES;

Db2のSAMPLEデータベースに接続して、このSQLを実行します。

db2 -tvf this_week.sql

本日9月21日であるため、以下の結果が戻ります。



FUNCTION        RESULT
--------------- --------------------------
CURRENT DATE    2018-09-21-10.28.26.600000
THIS_WEEK       2018-09-16-00.00.00.000000
THIS_MONTH      2018-09-01-00.00.00.000000
THIS_QUARTER    2018-07-01-00.00.00.000000
THIS_YEAR       2018-01-01-00.00.00.000000

  5 レコードが選択されました。

それぞれNEXT関数もあり

この4つには、はそれぞれに応じたNEXT関数もあります。
NEXT関数は、次の週・月・四半期・年を戻します。

NEXT_WEEK - 指定した日付の翌週の最初の日を戻す
NEXT_MONTH - 指定した日付の翌月の初日を戻す
NEXT_QUARTER - 指定した日付の次の四半期の最初の日を戻す
NEXT_YEAR - 指定した日付の翌年の最初の日を戻す

Db2のSAMPLEデータベースに接続して、実行してみましょう。

next_week.sqlというテキストファイルにSQLを書いて保管します。

(next_week.sql)

WITH DATES(FUNCTION, RESULT) AS 
  ( 
  VALUES
    ('CURRENT DATE   ',NOW),
    ('NEXT_WEEK      ',NEXT_WEEK(NOW)),
    ('NEXT_MONTH     ',NEXT_MONTH(NOW)),
    ('NEXT_QUARTER   ',NEXT_QUARTER(NOW)),
    ('NEXT_YEAR      ',NEXT_YEAR(NOW))
  )
SELECT * FROM DATES;

Db2のSAMPLEデータベースに接続して、このSQLを実行します。

db2 -tvf next_week.sql

本日9月21日であるため、以下の結果が戻ります。



FUNCTION        RESULT
--------------- --------------------------
CURRENT DATE    2018-09-21-10.39.27.586000
NEXT_WEEK       2018-09-23-00.00.00.000000
NEXT_MONTH      2018-10-01-00.00.00.000000
NEXT_QUARTER    2018-10-01-00.00.00.000000
NEXT_YEAR       2019-01-01-00.00.00.000000

  5 レコードが選択されました。

参考資料

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