日付に使用されるデフォルトの形式は、DB2データベースの地域コード (データベースの作成時に指定できます) によって決まります。たとえば、私のデータベースは、territory=US を使用して作成されました。したがって、日付形式は次のようになります。
values current date
1
----------
05/30/2003
1 record(s) selected.
DB CFG から地域コードを取得できます。
db2 get db cfg | egrep 'code|territory'
Database territory = US
Database code page = 1208
Database code set = UTF-8
Database country/region code = 1
つまり、形式はMM/DD/YYYYです。形式を変更したい場合は、db2 ユーティリティー・パッケージのコレクションをバインドして、別の日付形式を使用できます。
SQL を使用して現在の日付、時刻、およびタイムスタンプを取得するには (基本的に、日付形式が何であるかがわかります)、適切な DB2 レジスタを参照します。 DB2 レジスターの値
db2 "SELECT current date FROM sysibm.sysdummy1 "
1
----------
06/02/2014
1 record(s) selected.
関数内の引用符を省略しても DATE 関数は機能しますが、結果は正しくありません。
db2 "SELECT date(2001-09-22) FROM sysibm.sysdummy1 "
1
----------
05/24/0006
1 record(s) selected.
DATE 関数は、入力として文字列を取得すると、それが DB2 日付の有効な文字表現であると想定し、それに応じて変換します。対照的に、入力が数値の場合、関数はそれが現在の紀元の開始から 1 を引いた日数 (つまり、0001-01-01) を表していると想定します。上記のクエリでは、入力は 2001-09-22 で、これは (2001-9)-22 に等しく、1970 日に相当します。
上記のすべてが該当する場合、以下のコマンドは問題に対して正常に機能するはずです。
SELECT * FROM table WHERE registrationdate > '10/01/2002';