DATE型はInterSystems製品のデータ型の%Dateに、TIME型は%Timeに対応しています。
%Dateは、内部日付($Horologのカンマ区切り1番目)、%Timeは、内部時刻($Horologのカンマ区切り2番目)を登録するタイプであるため、サーバ側ロジックでは表示モードを切り替えない限り、内部(論理)形式の値が使用されます。
サーバ側ロジックで内部日付・時刻の表示形式を変更する方法は、操作方法により異なります。
以降の実行例では、Sample.Personテーブルを使用して解説します。
(コマンド実行例はSELECT文で記載していますが、更新文に対しても同様に記述できます。)
IRIS/IRIS for Health でお試しいただく場合は、以下ドキュメント、または関連トピック【サンプル(Sample.Person)のクラス定義ダウンロードとサンプルデータの作成について】をご参照いただき、Sample.Person クラスのインポートとサンプルデータの作成を行ってからお試しください。
InterSystems IRIS で使用するサンプルのダウンロード
Caché/Ensembleでお試しいただく場合は、SAMPLESネームスペースのSample.Personをご利用ください。
(1) 埋め込みSQLを利用する場合
埋め込みSQLを利用して表示形式を切り替えるには、#sqlcomple select を使用します。
指定できる値は Logical(デフォルト)、Display、ODBC、Runtime があります。
詳細は下記ドキュメントページをご参照ください。
埋め込み SQL のコンパイルとマクロ・プリプロセッサ【IRIS】
埋め込み SQL のコンパイルとマクロ・プリプロセッサ
(2) ダイナミックSQLを利用する場合
%SQL.Statementを利用したダイナミックSQLで表示形式を切り替えるには、%SelectModeプロパティを利用します。
設定できる値は以下の通りです。
0 :論理モード
1 :ODBCモード
2 :表示モード
※このプロパティは%Execute()の実行前に設定している必要があります。
詳細は下記クラスリファレンスをご参照ください。
クラスリファレンス - %SQL.Statement【IRIS]】
クラスリファレンス - %SQL.Statement
(3) クラスクエリを使用する場合
クラスクエリで表示形式を切り替えるには、Query定義のパラメータ:SELECTMODE を利用します。
指定できる値は、RUNTIME(デフォルト)、LOGICAL、DISPLAY、ODBCが設定できます。
定義例は以下の通りです。
Query NewQuery1() As %SQLQuery(SELECTMODE = "ODBC")
{
select ID,Name,DOB from Sample.Person where ID<=5
}
(4) 実行中プロセスに対して表示形式を切り替える方法
システムオブジェクト $SYSTEM.SQL.SetSelectMode()を利用して、カレントプロセスの表示形式を変更できます。
第1引数に 0(Logical)、1(ODBC)、2(Display)を指定します。
第2引数は、実行結果が%Statusで設定される参照渡しの引数です。
戻り値には、現在の表示モードの番号が返ります。
詳細は下記ドキュメントページをご参照ください。
InterSystems SQL の基礎 - データ表示オプション【IRIS】
CachéSQLの基礎_データ表示オプション
※プロセスに対して表示形式を切り替えた後、各SQL実行方法で表示形式を変更した場合は、最後に指定した表示形式が採用されます。
(5) ObjectScript関数を使用して、表示形式を変換する方法
ObjectScriptの表示変換用関数を利用して、内部形式⇔表示形式の変換を行う方法もあります。
日付用関数では
表示→内部形式 $ZDATEH(yyyymmdd,8) または、$ZDATE(yyyy-mm-dd,3)
内部→表示形式 YYYYMMDDの結果を取得する場合:$ZDATE(+$Horolog,8)
YYYY-MM-DDの結果を取得する場合:$ZDATEH(+$H,3)
時間用関数では
表示→内部形式 $ZTIMEH("HH:MM:SS")
内部→表示形式 HH:MM:SS の結果を取得する場合:$ZTIMEH($piece($Horolog,",",2))
日付時刻を取り扱う $ZDATETIME()と$ZDATETIMEH()関数もあります。
日付用関数の詳細は下記ドキュメントページをご参照下さい。
ObjectScript関数【IRIS】
ObjectScript関数