Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Delphi/400 SELECT SQLによる現在日時の取得

Delphi/400において、更新日時を参照する等の目的で
IBM i 側のシステム日時を使用したい場合、弊社の開発事例では
「TCall400を用いて、日時取得用に別に作成しておいたCLを呼び出してその戻り値を使用する」
ことが多いのですが、例えばネイティブ接続を使用しない場合はCLを呼び出せません。

このような事情がある場合、SELECTのSQL単体でシステム日時を取得できます。


設定方法

以下のようなSQLを発行すると、IBM i側のシステム日時が入った結果が開きます。

SELECT CURRENT DATE AS XXXX, CURRENT TIME AS YYYY,
CURRENT TIMESTAMP AS ZZZZ FROM SYSIBM/SYSDUMMY1

  • CURRENT DATE はシステム日付(TDateField)
  • CURRENT TIME はシステム時刻(TTimeField)
  • CURRENT TIMESTAMP はシステム日付+時刻(TSQLTimeStampField)

となっており、いずれも
Query.FieldByName(‘~~~’).AsDateTime でDelphi/400から参照可能です。

 

また、上記の例で使用した「SYSIBM/SYSDUMMY1」
IBM iに用意された、表の参照を必要とするけれども
表の内容は重要でないSQLステートメントのための、
あらかじめレコードが1行セットされたダミーテーブルです。

「SYSIBM/SYSDUMMY1」の代わりに既存の別のテーブルを使用する場合は、
レコードが必ず1行以上存在する任意のテーブルを指定して頂き、
かつSQLの末尾に「FETCH FIRST ROW ONLY」を付加して下さい。

(このFETCH句が無いと、テーブルのレコード数が取得結果の行数になり
 レスポンスに影響するため、最初の1行のみを取得するようにします。)

 

(Tipsメルマガ 2020年12月号より)