日付と時刻を検証し、形式を変換します。
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  オプション — 入力した月名を含む変数 
yearopt  オプション — 時間ウィンドウで、年を 2 桁の値として表記するように指定する数値コード 
startwin  オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの開始を指定する数値 
endwin  オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの終了を指定する数値 
mindate  オプション — 有効な日付範囲の下限を指定する数値。mindate を省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。既定は 0 (1840 年 12 月 31 日) です。 
maxdate  オプション — 有効な日付範囲の上限 
erropt  オプションhdatetime が無効あるいは範囲外の場合に生じるエラー・メッセージを削除 
概要
$ZDATETIME は、指定された日付と時刻を検証し、それらを $HOROLOG 形式あるいは $ZTIMESTAMP 形式から、別の日付時刻の形式に変換します。返される値は、使用するパラメータによって異なります。
パラメータ
hdatetime
内部の日付時刻の形式値。 これは、$HOROLOG 形式 (コンマで区切られた 2 つの正整数)、または $ZTIMESTAMP 形式 (小数点以下 9 桁までの数) で表記する必要があります。hdatetime は、文字列値、変数、式として指定できます。
dformat
返される日付の形式。有効な値は以下の通りです。
-1  現在のロケールの DateFormat プロパティから、有効な dformat 値を取得します。既定は 1 です。dformat を指定しなければ、これが既定になります。 
MM/DD/[YY]YY (01/01/97) - 既定形式 
DD Mmm [YY]YY (01 Jul 97) 
YYYY-MM-DD (1997-07-01) - ODBC 形式 
DD/MM/[YY]YY (01/07/97) - ヨーロッパ形式 
Mmm D, YYYY (Jul 1, 1997) 
Mmm D YYYY (Jul 1 1997) 
Mmm DD [YY]YY (Jul 01 1997) 
YYYYMMDD (19970701) - 数値形式 
Mmmmm D, YYYY (July 1, 1997) 
10  W (2) [週の 2 日目] 
11  Www (Tue) 
12  Wwwwww (Tuesday) 
以下はその説明です。
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 ... Friday Saturday” 
tformat
時刻の値を表記する形式を指定する数値です。サポートされる値は以下の通りです。
-1  現在のロケールの TimeFormat プロパティから、有効な tformat 値を取得します。既定は 1 です。tformat を指定しない場合、これが既定になります。 
時刻を "hh:mm:ss" (24 時間) で表します。 
時刻を “hh:mm” (24 時間) で表します。 
時刻を “hh:mm:ss[AM/PM]” (12 時間) で表します。 
時刻を “hh:mm[AM/PM]” (12 時間) で表します。 
precision
時刻を表すときに、その精度を指定する小数点以下の桁を示す数値です。つまり、precision の値が 3 であるとすると、$ZDATETIME は秒数を小数点以下 3 桁まで表示します。precision の値が 9 であれば、$ZDATETIME は秒数を小数点以下 9 桁まで表示します。
サポートされている値は、以下の通りです。
-1: は、現在のロケールの TimePrecision プロパティから precision 値を取得します。既定は 0 です。precision を指定しなければ、これが既定の振る舞いになります。
ゼロ (0) 以上の n の値は、時刻を少数点以下の n 桁まで表すことを示します。
monthlist
指定した月名を含む文字列あるいは変数名です。詳細は、パラメータのセクションを参照してください。monthlist にある名前は、現在のロケールの MonthAbbr プロパティに指定されている既定の月の省略値を置き換えます。monthlist を使用して、正式な月名や、英語以外の言語の月名、およびその省略名を指定します。
monthlist は、dformat が 2、5、6、7、9 の場合のみ有効です。dformat が 1、3、4、8、10、11、12 の場合、$ZDATETIMEmonthlist を無視します。
monthlist の最初の文字は、区切り文字を指定します (既定リストにある Jan の前の空白をご覧ください)。各月の名前、もしくは monthlist にある省略名の間に、同じ区切り文字を置く必要があります。この区切り文字は、返される日付の月、日、年の間に表示されます。
monthlist を省略、あるいは -1 の monthlist 値を指定すると、$ZDATETIME は現在のロケールの MonthAbbr プロパティで定義された月の省略名リストを使用します。既定は以下の通りです。
“Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec”
しかし、dformat が 9 の場合、$ZDATETIME は現在のロケールの MonthName プロパティで定義される正式な名前リストを使用します。既定は以下の通りです。
“January February March ... November December”
yearopt
dformat 値に 0、1、2、4、7 を使用して、年を 2 桁で表示する時間ウィンドウを指定する数値コードです。yearopt の値は以下の通りです。
-1  現在のロケールの YearOption プロパティから有効な yearopt 値を取得します。既定は 0 です。yearopt を指定しない場合、これが既定になります。 
(%DATE ユーティリティにより構築される) プロセス特有のスライディング・ウィンドウが有効になっていない限り、20 世紀 (1900 年から 1999 年まで) の日付は 2 桁で表示します。スライディング・ウィンドウが有効な場合は、指定範囲内の日付のみ 2 桁の年で表示します。1900 年代以外もしくはプロセス特有のスライディング・ウィンドウ以外の日付は、すべて 4 桁で表示します。 
20 世紀の日付は 2 桁の年、それ以外は 4 桁で表します。 
すべての日付を 2 桁の年で表します。 
startwin と (オプションで) endwin に定義した一時的なスライディング・ウィンドウ範囲内にある日付を、2 桁の年で表します。それ以外の日付は 4 桁で表します。yearopt が 3 の場合、startwinendwin は、$HOROLOG 形式の絶対日付です。 
すべての日付を 4 桁の年で表します。 
startwin と (オプションで) endwin に定義したスライディング・ウィンドウ範囲内にあるすべての日付を、2 桁の年で表します。それ以外の日付は 4 桁で表します。yearopt が 5 の場合、startwinendwin は相対年になります。 
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 のとき、startwin はスライディング・ウィンドウの最後の日付を示す $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 プロパティから上限を取得します。既定は 2980013 (9999 年 12 月 31 日) です。
erropt
このパラメータは、hdatetime が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生じる代わりに、関数は erropt を返します。
以下の例は、現在のローカル日付および時刻を表示します (この場合、2002 年 11 月 25 日 1:45:16 pm)。最初の例は、ロケールの既定の形式で表示します。
   WRITE $ZDATETIME($HOROLOG)
 
11/25/2002 13:45:16 のようにフォーマットされた、現在の日付と時刻を返します。
以下の例は、同じ日付と時刻を、ODBC 形式で UTC (Coordinated Universal Time) の日付と時間として表示しています。精度は、小数点以下 6 桁まで表します。
   WRITE $ZDATETIME($ZTIMESTAMP,3,1,6)
 
2002-11-25 18:45:16.960000 のようにフォーマットされた、現在のタイムスタンプ日付と時刻を返します。
メモ
$ZDATETIME で無効な値
以下の状況では、<FUNCTION> エラーが発生します。
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
erropt を使用するエラー処理
erropt が指定されている場合、このパラメータは、無効な値あるいは hdatetime の範囲外の値が指定された場合に生成されるエラー・メッセージのみを制御します。他のパラメータに無効、あるいは範囲外の値を指定することにより発生したエラーは、erropt が指定されたか否かに関係なく、常にエラー・メッセージを生成します。
例えば、endwinstartwin より前にスライディング・ウィンドウを指定すると、$ZDATETIME は常に <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 で、これらのプロパティ (および、対応する既定値) は以下の通りです。
このドキュメントでは、これらのプロパティに常に既定値を使用します。
$ZDATE$ZDATETIME
$ZDATETIME$ZDATE に類似しています。$ZDATETIME は、日付と時間を組み合わせた値を変換するのに対し、$ZDATE は、日付値のみを変換します。 例えば以下のようになります。
   WRITE $ZDATE($HOROLOG)
 
11/25/2002 のようにフォーマットされた、現在の日付を返します。
   WRITE $ZDATETIME($HOROLOG)
 
11/25/2002 13:53:57 のようにフォーマットされた、現在の日付と時刻を返します。
関連項目