日付と時刻を検証し、形式を変換して表示します。
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)
-
-
$ZDATETIME(
hdatetime,
dformat,
tformat,
precision,
monthlist,
yearopt,
startwin,
endwin,
mindate,
maxdate,
erropt) は、指定する他のパラメータによってさらに定義された、
dformat と
tformat で指定される表示形式で、日付と時刻を返します。有効な日付の範囲は、
mindate パラメータと
maxdate パラメータによって制限される場合があります。
内部形式値として指定された日付と時刻。Caché 内部形式は、任意の開始ポイント (1840 年 12 月 31 日) からの日数で日付を表示し、その日の秒数で時刻を表示します。
hdatetime の値は、以下のいずれかの形式の文字列である必要があります。
-
$HOROLOG :コンマで区切られた、2 つの符号なし整数。1 つ目は、日付 (日数) を指定する整数で、2 つ目は、時刻 (秒数) を指定する整数です。
-
$ZTIMESTAMP :コンマで区切られた、2 つの符号なしの数。1 つ目は、日付 (日数) を指定する整数で、2 つ目は、時刻 (秒数と秒の小数部) を指定する整数です。時刻値は、小数点以下の精度 9 桁 (秒の小数部) までで表示できます。
時刻の値を表記する形式を指定する数値です。サポートされる値は以下のとおりです。
tformat 値が (現地時間を返す) 1 から 4 までの場合、日付と時刻はスペースで区切られます。
tformat 値が (UTC 時間の情報を返す) 5 から 8 までの場合、日付と時刻は文字 "T" で区切られます。
tformat を 5 または 6 に設定すると、
hdatetime 入力値は現地時刻であると想定され、現地時刻として表示されます。UTC からのオフセットは、ローカル・タイムゾーンの設定から取られます。
tformat を 7 または 8 に設定すると、
hdatetime 入力値は現地日付および時刻であると想定されます。時刻は対応する UTC 時間に変更されます (ローカル・タイムゾーンの設定を使用して計算)。返される日付も、この UTC 時間値に一致するように変更されます (必要な場合)。そのため、この日付は、現地日付とは異なる場合があります。
ゼロ (0) 以上の
n の値は、時刻を小数点以下の
n 桁まで表すことを示します。
precision は
hdatetime 形式に小数点以下の値 (
$ZTIMESTAMP 形式) を含めることができ、選択した
tformat オプションに秒が含まれている場合にのみ適用されます。末尾のゼロは、抑制されません。指定した精度がシステムで利用できる精度を超えている場合、精度の余分な桁は、末尾のゼロとして返されます。
-
文字列の最初の文字は、区切り文字 (通常はスペース) です。
monthlist 内の各月名の間に、同じ区切り文字を置く必要があります。この区切り文字は、返される日付の月、日、年の間に表示されます。このため、スペースが通常望ましい区切り文字となります。
-
月名のリストは、1 月 から 12 月に対応する 12 のエントリを含む必要があります。12 より多い、または 12 より少ない月名を指定することは可能ですが、
hdatetime にある月に対応する月名がない場合、<ILLEGAL VALUE> エラーが返されます。
dformat 値に 0、1、2、4、7 を使用して、年を 2 桁で表示する時間ウィンドウを指定する数値コードです。
yearopt の値は以下のとおりです。
yearopt=5 のとき、スライディング・ウィンドウは常に
startwin で指定する年の最初の日付 (1 月 1 日) で開始し、
endwin で指定する年の最後の日付 (12 月 31 日) あるいは最後と暗示される年の最後の日付 (
endwin が省略されているとき) で終了します。
endwin を省略、あるいは -1 を指定した場合、スライディング・ウィンドウの有効期限は 100 年間です。
startwin と
endwin の両方を指定する場合、指定するスライディング・ウィンドウの年数は 100 年以内に収める必要があります。
有効な日付の下限を指定する数値です。mindateを省略、あるいは -1 を指定すると、現在のロケールの
DateMinimum プロパティから下限を取得します。既定は 0 (1840 年 12 月 31 日) です。
有効な日付の上限を指定する数値です。maxdateを省略、あるいは -1 を指定すると、現在のロケールの
DateMaximum プロパティから上限を取得します。既定は、
$HOROLOG の日付部分で許容される最大値である、2980013 (9999 年 12 月 31 日) です。
maxdate を超える値を指定しようとすると、<VALUE OUT OF RANGE> エラー・メッセージが発生します。
このパラメータは、
hdatetime 値が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生成する代わりに、関数は
erropt を返します。
以下の例は、現在の現地日付と現地時刻を表示します。また、ロケールの既定の日付および時刻形式を取ります。
WRITE $ZDATETIME($HOROLOG)
WRITE $ZDATETIME($ZTIMESTAMP,3,1,6)
以下の例は、現地時間を 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
以下の状況では、<FUNCTION> エラーが発生します。
-
無効な
dformat コード (-1 未満もしくは 12 より大きい整数値、0、整数以外の値) を指定したとき
-
tformat に無効な値 (-1 未満または 8 より大きい整数値、0、整数以外の値) を指定したとき
-
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
-
日付または時刻に無効な値を指定して、
erropt 値を提供しないとき
-
-
-
-
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
erropt パラメータが指定されている場合、このパラメータは、
hdatetime の無効な値、あるいは範囲外の値が原因で生成されるエラー・メッセージを制御します。他のパラメータの無効な値、あるいは範囲外の値が原因で発生したエラーについては、
erropt が指定されているかどうかに関係なく、常にエラー・メッセージが生成されます。
$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) 機能を使用して、ロケールの既定値を変更できます。
最初の 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)
WRITE $ZDATETIME($HOROLOG)
11/25/2002 13:53:57 のようにフォーマットされた、現在の日付と時刻を返します。