日付と時刻を検証し、形式を変換して表示します。
Synopsis
$ZDATETIME(hdatetime,dformat,tformat,precision,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
$ZDT(hdatetime,dformat,tformat,precision,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
パラメータ
hdatetime 内部日付/時刻形式で指定した、日付と時刻の値。
dformat オプション — 返される日付の形式。
tformat オプション — 返される時刻の形式。
precision オプション — 返される時刻値の精度を示す小数点以下の桁数 (秒の小数部)。
monthlist オプション — 月の名前のリスト (または、月の省略名) を含む文字列。この文字列は、区切り文字から始まり、12 個のエントリは、この区切り文字で分けられる必要があります。
yearopt オプション — 時間ウィンドウで、年を 2 桁の値として表記するように指定する数値コード。
startwin オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの最初を指定する数値。
endwin オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの最後を指定する数値。
mindate オプション — 有効な日付範囲の下限を指定する数値。省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。既定は 0 (1840 年 12 月 31 日) です。
maxdate オプション — 有効な日付範囲の上限。
erropt オプション — このパラメータは、hdatetime 値が無効、あるいは範囲外の場合に生じるエラー・メッセージを制御します。
概要
$ZDATETIME は、指定された日付と時刻を検証し、それらを $HOROLOG 内部形式あるいは $ZTIMESTAMP 内部形式から、別の日付時刻の表示形式に変換します。返される値は、指定するパラメータによって異なります。
パラメータ
hdatetime
内部形式値として指定された日付と時刻。Caché 内部形式は、任意の開始ポイント (1840 年 12 月 31 日) からの日数で日付を表示し、その日の秒数で時刻を表示します。hdatetime の値は、以下のいずれかの形式の文字列である必要があります。
hdatetime は、文字列値、変数、式として指定できます。
dformat
返される日付の形式。有効な値は以下のとおりです。
意味
-1 現在のロケールの DateFormat プロパティから、有効な dformat 値を取得します。既定は 1 です。dformat を指定しなければ、これが既定の振る舞いになります。
1 MM/DD/[YY]YY (01/01/97) - 既定の形式
2 DD Mmm [YY]YY (01 Jul 97)
3 YYYY-MM-DD (1997-07-01) - ODBC 形式
4 DD/MM/[YY]YY (01/07/97) - ヨーロッパ形式
5 Mmm D, YYYY (Jul 1, 1997)
6 Mmm D YYYY (Jul 1 1997)
7 Mmm DD [YY]YY (Jul 01 1997)
8 YYYYMMDD (19970701) - 数値形式
9 Mmmmm D, YYYY (July 1, 1997)
10 W (2) [週の 2 日目]
11 Www (Tue)
12 Wwwwww (Tuesday)
以下はその説明です。
構文 意味
YYYY YYYY は 4 桁の年です。[YY]YY は、hdatetime の年がアクティブ・ウィンドウ内で 2 桁の場合は 2 桁、それ以外は 4 桁です。
MM 2 桁の月。
D 日付が 10 未満の場合は 1 桁、それ以外は 2 桁の日。
DD 2 桁の日。
Mmm 現在のロケールの MonthAbbr プロパティから取得した月の省略形。別の月の省略形 (あるいは長さに制限のない名前) は、$ZDATETIMEmonthlist パラメータとして指定したオプションのリストから取得することができます。MonthAbbr の既定は "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec" です。
Mmmmm MonthName プロパティが指定する月の正式な名前。以下はその規定値です。"January February March ... November December"
W 曜日を示す 0 から 6 の数字。(例) Sunday は 0、Monday は 1、Tuesday は 2。
Www 現在のロケールの WeekdayAbbr プロパティが指定する曜日の省略形。既定値は、"Sun Mon Tue Wed Thu Fri Sat" です。
Wwwwww 現在のロケールの WeekdayName プロパティが指定する曜日の正式な名前。既定値は、"Sunday Monday Tuesday Wednesday Thursday Friday Saturday" です。
tformat
時刻の値を表記する形式を指定する数値です。サポートされる値は以下のとおりです。
意味
-1 現在のロケールの TimeFormat プロパティから、有効な tformat 値を取得します。既定は 1 です。tformat を指定しなければ、これが既定になります。
1 時刻を "hh:mm:ss" (24 時間) の形式で表します。
2 時刻を "hh:mm" (24 時間) の形式で表します。
3 時刻を "hh:mm:ss[AM/PM]" (12 時間) の形式で表します。
4 時刻を "hh:mm[AM/PM]" (12 時間) の形式で表します。
5 時刻を "hh:mm:ss+/-hh:mm" (24 時間) の形式で表します。時刻を現地時間で表します。プラス (+) またはマイナス(–) 接尾語は、グリニッジ標準時間 (GMT) としても知られる、協定世界時 (UTC) からの現地時間のオフセットを示します。マイナス符号 (-hh:mm) は、返された時間と分のオフセット数により、現地時間がグリニッジ標準時間より早い (西向きである) ことを示します。プラス符号 (+hh:mm) は、返された時間と分のオフセット数により、現地時間がグリニッジ標準時間より遅い (東向きである) ことを示します。
6 時刻を "hh:mm+/-hh:mm" (24 時間) の形式で表します。時刻を現地時間で表します。プラス (+) またはマイナス(–) 接尾語は、グリニッジ標準時間 (GMT) としても知られる、協定世界時 (UTC) からの現地時間のオフセットを示します。マイナス符号 (-hh:mm) は、返された時間と分のオフセット数により、現地時間がグリニッジ標準時間より早い (西向きである) ことを示します。プラス符号 (+hh:mm) は、返された時間と分のオフセット数により、現地時間がグリニッジ標準時間より遅い (東向きである) ことを示します。
7 時刻を "hh:mm:ssZ" (24 時間) の形式で表します。"Z" 接尾語は、時刻が現地時間ではなく、グリニッジ標準時間 (GMT) としても知られる、協定世界時 (UTC) で表示されていることを示します。
8 時刻を "hh:mmZ" (24 時間) で表します。"Z" 接尾語は、時刻が現地時間ではなく、グリニッジ標準時間 (GMT) としても知られる、協定世界時 (UTC) で表示されていることを示します。
tformat 値が (現地時間を返す) 1 から 4 までの場合、日付と時刻はスペースで区切られます。tformat 値が (UTC 時間の情報を返す) 5 から 8 までの場合、日付と時刻は文字 "T" で区切られます。
tformat を 5 または 6 に設定すると、hdatetime 入力値は現地時刻であると想定され、現地時刻として表示されます。UTC からのオフセットは、ローカル・タイムゾーンの設定から取られます。
tformat を 7 または 8 に設定すると、hdatetime 入力値は現地日付および時刻であると想定されます。時刻は対応する UTC 時間に変更されます (ローカル・タイムゾーンの設定を使用して計算)。返される日付も、この UTC 時間値に一致するように変更されます (必要な場合)。そのため、この日付は、現地日付とは異なる場合があります。
Note:
$ZDATETIME には、hdatetime 入力値が UTC 時間か現地時間かを判別する方法がありません。したがって、$ZTIMESTAMP 値などの、もともと UTC である hdatetime では、tformat 値 5、6、7、または 8 を使用しないでください。時間を現地時間に再変換する演算で tformat 7 または 8 変換からの出力を使用する場合は、現地から UTC への変換時に日付が変更されている可能性があることに注意してください。
precision
時刻を表すときに、その精度を指定する小数点以下の桁を示す数値です。つまり、precision の値として 3 を入力すると、$ZDATETIME は秒数を小数点以下 3 桁まで表示します。precision の値として 9 を入力すると、$ZDATETIME は秒数を小数点以下 9 桁まで表示します。
サポートされている値は、以下のとおりです。
現在のロケールの TimePrecision プロパティから、precision値を取得します。既定は 0 です。precision を指定しなければ、これが既定の振る舞いになります。
ゼロ (0) 以上の n の値は、時刻を小数点以下の n 桁まで表すことを示します。
precision は hdatetime 形式に小数点以下の値 ($ZTIMESTAMP 形式) を含めることができ、選択した tformat オプションに秒が含まれている場合にのみ適用されます。末尾のゼロは、抑制されません。指定した精度がシステムで利用できる精度を超えている場合、精度の余分な桁は、末尾のゼロとして返されます。
monthlist
月名の文字列を含む文字列あるいは変数名です。monthlist にある名前は、既定の月名の値と月の省略値を置き換え、現在のロケールの MonthName プロパティと MonthAbbr プロパティをオーバーライドします。monthlist の最も一般的な用途は、ロケールの既定言語以外の言語で、正式な月名または省略名を指定することです。
monthlist は、dformat が 2、5、6、7、9 の場合にのみ有効です。dformat が 1、3、4、8、10、11、12 の場合、$ZDATETIMEmonthlist を無視します。
monthlist 文字列の形式は、以下のとおりです。
monthlist を省略するか、または monthlist 値に -1 を指定して、dformat が 2、5、6、または 7 の場合、$ZDATETIME は現在のロケールの MonthAbbr プロパティで定義された月の省略名リストを使用します。既定は以下のとおりです。"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
monthlist を省略するか、または monthlist 値に -1 を指定して、dformat が 9 の場合、$ZDATETIME は現在のロケールの MonthName プロパティで定義された月名のリストを使用します。既定は以下のとおりです。"January February March April May June July August September October November December"
yearopt
dformat 値に 0、1、2、4、7 を使用して、年を 2 桁で表示する時間ウィンドウを指定する数値コードです。yearopt の値は以下のとおりです。
意味
-1 現在のロケールの YearOption プロパティから有効な yearopt 値を取得します。この既定値は 0 です。yearopt を指定しない場合、これが既定の振る舞いになります。
0 (%DATE ユーティリティにより構築される) プロセス特有のスライディング・ウィンドウが有効になっていない限り、20 世紀 (1900 年から 1999 年まで) の日付は 2 桁で表示します。スライディング・ウィンドウが有効な場合は、指定範囲内の日付のみ 2 桁の年で表示します。1900 年代以外もしくはプロセス特有のスライディング・ウィンドウ以外の日付は、すべて 4 桁で表示します。
1 20 世紀の日付は 2 桁の年、それ以外は 4 桁で表します。
2 すべての日付を 2 桁の年で表します。
3 startwin と (オプションで) endwin に定義した一時的なスライディング・ウィンドウ範囲内に収まる日付を、2 桁の年で表します。それ以外の日付は 4 桁で表します。yearopt=3 の場合、startwinendwin は、$HOROLOG 形式の絶対日付です。
4 すべての日付を 4 桁の年で表します。
5 startwin と (オプションで) endwin に定義したスライディング・ウィンドウ範囲内に収まる日付をすべて、2 桁の年で表します。それ以外の日付は 4 桁で表します。yearopt=5 の場合、startwinendwin は相対年になります。
6 2 桁の年で現在の世紀にあるすべての日付を表します。それ以外は 4 桁の年で表します。
startwin
日付を 2 桁の年で表す必要があるスライディング・ウィンドウの最初を指定する数値です。yearopt の値に 3 または 5 を使用する場合は、startwin を指定する必要があります。startwin は、その他の yearopt 値では無効になります。
yearopt=3 のとき、startwin はスライディング・ウィンドウの最初の日付を示す $HOROLOG 日付形式の絶対日付です。
yearopt=5 のとき、startwin は、現在の年より前の年数で表される、スライディング・ウィンドウの最初の年を示す数値です。
endwin
日付を 2 桁の年で表すスライディング・ウィンドウの最後を指定する数値です。yearopt が 3 あるいは 5 のとき、endwin をオプションで指定する必要があります。endwin は、その他の yearopt 値では無効になります。
yearopt=3 のとき、endwin はスライディング・ウィンドウの最後の日付を示す $HOROLOG 日付形式の絶対日付です。
yearopt=5 のとき、endwin は、現在の年から後の年数を示すスライディング・ウィンドウの最後の年を示す数値です。
yearopt=5 のとき、スライディング・ウィンドウは常に startwin で指定する年の最初の日付 (1 月 1 日) で開始し、endwin で指定する年の最後の日付 (12 月 31 日) あるいは最後と暗示される年の最後の日付 (endwin が省略されているとき) で終了します。
endwin を省略、あるいは -1 を指定した場合、スライディング・ウィンドウの有効期限は 100 年間です。
startwinendwin の両方を指定する場合、指定するスライディング・ウィンドウの年数は 100 年以内に収める必要があります。
mindate
有効な日付の下限を指定する数値です。mindateを省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。既定は 0 (1840 年 12 月 31 日) です。
maxdate
有効な日付の上限を指定する数値です。maxdateを省略、あるいは -1 を指定すると、現在のロケールの DateMaximum プロパティから上限を取得します。既定は、$HOROLOG の日付部分で許容される最大値である、2980013 (9999 年 12 月 31 日) です。maxdate を超える値を指定しようとすると、<VALUE OUT OF RANGE> エラー・メッセージが発生します。
erropt
このパラメータは、hdatetime 値が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生成する代わりに、関数は erropt を返します。
以下の例は、現在の現地日付と現地時刻を表示します。また、ロケールの既定の日付および時刻形式を取ります。
   WRITE $ZDATETIME($HOROLOG)
以下の例は、現在の日付と時刻を表示します。$ZTIMESTAMP には、現在の日付値と時刻値が協定世界時 (UTC) 日付/時刻として含まれます。dformat パラメータは ODBC 日付形式を指定し、tformat パラメータは 24 時間制を指定し、precision パラメータは 6 桁の秒の小数部の精度を指定します。
   WRITE $ZDATETIME($ZTIMESTAMP,3,1,6)
2005-11-25 18:45:16.960000 のようにフォーマットされた、現在のタイムスタンプ日付と時刻を返します。
以下の例は、現地時間を UTC 時間に変換する方法と、その変換結果によりどのように日付が変更されるかを示します。ほとんどのタイム・ゾーンにおいて、以下の $ZDATETIME 演算のいずれかで、時間変換により日付変更が生じます。
   SET local = $ZDATETIME("60219,82824",3,1)
   SET utcwest = $ZDATETIME("60219,82824",3,7)
   SET utceast = $ZDATETIME("60219,00024",3,7)
   WRITE !,local,!,utcwest,!,utceast
メモ
$ZDATETIME で無効な値
以下の状況では、<FUNCTION> エラーが発生します。
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
erropt を使用するエラー処理
erropt パラメータが指定されている場合、このパラメータは、hdatetime の無効な値、あるいは範囲外の値が原因で生成されるエラー・メッセージを制御します。他のパラメータの無効な値、あるいは範囲外の値が原因で発生したエラーについては、erropt が指定されているかどうかに関係なく、常にエラー・メッセージが生成されます。
例えば、$ZDATETIMEendwinstartwin より前になる値のスライディング・ウィンドウを指定すると、常に <ILLEGAL VALUE> エラーが発生します。同様に、maxdatemindate より小さい場合、<ILLEGAL VALUE> エラーが発生します。
日付区切り文字
$ZDATETIME は、dformat が 1 または 4 のとき、年月日の区切り文字として現在のロケールの DateSeparator プロパティの値を使用します。ODBC 日付形式 (dformat=3) の区切り文字は常に、ODBC 基準で要求されている "-" になります。DateSeparator の既定値は "/" で、この区切り文字はこのドキュメント全体を通して使用されています。
小数区切り文字
$ZDATETIME は、整数と小数の区切り文字として、現在のロケールの DecimalSeparator プロパティ値を使用します。ODBC 日付形式 (dformat=3) の区切り文字は常に、ODBC 基準で要求されている "." になります。DecimalSeparator の既定値は "." で、この区切り文字はこのドキュメント全体を通して使用されています。
時間区切り文字
既定では、Caché は、現在のロケールの TimeSeparator プロパティ値を使用して、時間の区切り文字を指定します。既定では、区切り文字は ":" で、すべての例でこの区切り文字を使用しています。
時間接尾語
既定では、Caché は現在のロケールのプロパティを使用して、時間の接尾語名を指定します。$ZDATETIME で、これらのプロパティ (および、対応する既定値) は以下のとおりです。
このドキュメントでは、これらのプロパティに常に既定値を使用します。
日付と時刻の既定値のカスタマイズ
既定の日付形式は、ロケールの DateFormat プロパティで設定されます。これは、dformat が省略されるか、または –1 に設定されたときに返される日付形式です。既定の日付区切り文字と小数点区切り文字も、ロケールに対して定義されています。各国言語サポート (NLS) 機能を使用して、ロケールの既定値を変更できます。
以下の例で、最初の $ZDATETIME は、ロケールの既定形式で日付と時刻を返します。入力パラメータは、$ZTIMESTAMP 特殊変数、既定の dformat パラメータと tformat パラメータ、および 2 小数桁に設定された precision です。ほとんどのロケールでは、最初の $ZDATETIME は、dformat=1 または、日付の区切り文字にスラッシュ、秒の小数部用の小数点区切り文字にドットを使用したアメリカ形式の日付と時刻を返します。
最初の NLS 機能は、2 つ目の $ZDATETIMEで示されるように、ロケールの日付既定値を dformat=4、またはヨーロッパ日付形式 (DD/MM/[YY]YY) に変更します。2 つ目の NLS 機能は、(dformat –1、1、および 4 に影響を与える) 日付区切り文字に対するロケールの既定値を変更します。この例では、3 つ目の $ZDATETIME で示されるように、日付区切り文字は、ドット (".") に設定されています。最後の NLS 関数は、最後の $ZDATETIME で示されるように、このロケールの小数点区切り文字をヨーロッパ標準 (",") に変更します。
   WRITE !,$ZDATETIME($ZTIMESTAMP,,,2)
   SET x=$$SetDCFormat^%NLS("DateFormat",4)
   WRITE !,$ZDATETIME($ZTIMESTAMP,,,2)
   SET y=$$SetDCFormat^%NLS("DateSeparator",".")
   WRITE !,$ZDATETIME($ZTIMESTAMP,,,2)
   SET z=$$SetDCFormat^%NLS("DecimalSeparator",",")
   WRITE !,$ZDATETIME($ZTIMESTAMP,,,2)
$ZDATE と $ZDATETIME
$ZDATETIME$ZDATE に類似しています。$ZDATETIME は、日付と時刻を組み合わせた値を変換するのに対し、$ZDATE は、日付値のみを変換します。例えば以下のようになります。
   WRITE $ZDATE($HOROLOG)
11/25/2002 のようにフォーマットされた、現在の日付を返します。
   WRITE $ZDATETIME($HOROLOG)
11/25/2002 13:53:57 のようにフォーマットされた、現在の日付と時刻を返します。
$ZDATE は、5 から 8 までの tformat 値をサポートしていません。
関連項目