日付と時刻を検証し、形式を変換します。
Synopsis
$ZDATETIMEH(datetime,dformat,tformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
$ZDTH(datetime,dformat,tformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt)
パラメータ
datetime  $HOROLOG 形式に変換する日付と時刻 
dformat  オプション — 日付の形式 
tformat  オプション — 時刻値を表す形式  
monthlist  オプション — 入力した月名を含む文字列あるいは変数名 
yearopt   オプション — 年を 2 桁の値として表記する時間ウィンドウ 
startwin   オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの開始を指定する数値 
endwin  オプション — 日付を 2 桁の年で表す必要があるスライディング・ウィンドウの終了を指定する数値 
mindate  オプション — 有効な日付範囲の下限 
maxdate  オプション — 有効な日付範囲の上限 
erropt  オプションdatetime が無効あるいは範囲外の場合に生じるエラー・メッセージを制御 
概要
$ZDATETIMEH は、指定した日付と時刻の値を検証し、$ZDATETIME 関数によって作成した形式から $HOROLOG 形式、または $ZTIMESTAMP (特殊変数) 形式に変換します。返される値は、使用するパラメータによって異なります。
$ZDATETIMEH(datetime) は、"MM/DD/[YY]YY hh:mm:ss[.ffff]” 形式の日付と時刻の値を、$HOROLOG 形式に変換します。
MM  2 桁の月 
DD   2 桁の日 
[YY]YY  1900 年から 1999 年までは 2 桁または 4 桁。1900 年より前、または 1999 年より後の年は 4 桁。 
hh  24 時間形式の時間 
mm  分 
ss  秒 
ffff  少数秒 (小数点以下 0 から 9 桁まで) 
$ZDATETIMEH(datetime,dformat,tformat,monthlist,yearopt,startwin,endwin,mindate,maxdate,erropt) は、日付と時刻の値を、($ZDATETIME により) 元々指定されている日付と時刻の形式から、$HOROLOG 形式または $ZTIMESTAMP 形式に変換します。dformattformatyearoptstartwinendwin の値は、$ZDATETIME に使用された値と同一です。
しかし、5、6、7、8、9 の dformat を使用するとき、$ZDATETIMEH は、dformat コード 1、2、3、5、6、7、8、9 に対応する、外部の日付形式によるあらゆる日付を認識し、変換します。また、T あるいは t で始まる特殊な相対日付形式も同様で、任意にプラス (+) やマイナス (-) を付けたり、現在の日付の前もしくは後に日数を付けます。
$ZDATETIMEH は、関数呼び出しで指定した時刻形式に関係なく、4 つの時刻形式の時刻を認識して変換します。さらに、$ZDATETIMEH は、接尾語 “AM、PM、NOON、MIDNIGHT” を認識して変換します。これらの接尾語は、大文字、小文字、または両方を混ぜ合わせて表すことができます。これらの接尾語を文字に省略することもできます。
認識する形式は、以下の通りです。
パラメータ値
datetime
$HOROLOG 形式に変換する日付と時刻。datetime は、先頭に日付、その後に 1 つの空白スペース、時刻と続く 1 つの文字列に評価する式として指定します。時刻部分を省略する場合、$ZDATETIMEH は $HOROLOG 形式の時刻部分をゼロに設定します。有効な日付値、および時刻値は、現在のロケールの DateFormat および TimeFormat プロパティや、dformat および tformat パラメータに指定する値によって異なります。日付に関する詳細は、$ZDATEH を参照してください。
dformat
日付の形式です。有効な値は以下の通りです。
-1  現在のロケールの DateFormat プロパティから、有効な dformat 値を取得します。既定は 1 です。dformat を指定しない場合、これが既定の振る舞いになります。 
MM/DD/[YY]YY (01/01/97 あるいは 03/27/2002) - 既定形式 
DD Mmm [YY]YY (01 Jul 97 あるいは 27 Mar 2002) 
YYYY-MM-DD (1997-07-01 あるいは 2002-03-27) - ODBC 形式 
DD/MM/[YY]YY (01/07/97 あるいは 27/03/2002) - ヨーロッパ形式 
Mmm D, YYYY (Jul 1, 1997 あるいは Mar 27, 2002) 
Mmm D YYYY (Jul 1 1997 あるいは Mar 27 2002) 
Mmm DD [YY]YY (Jul 01 1997 あるいは Mar 27 2002)  
YYYYMMDD (19930701 あるいは 20020327) - 数値形式 
Mmmmm D, YYYY (July 1, 1997 あるいは March 27, 2002) 
以下はその説明です。
YYYY  4 桁の年。[YY]YY は、datetime の日付がアクティブ・ウィンドウ内で 2 桁の場合は 2 桁、それ以外は 4 桁の数字です。 
MM  2 桁の月 
D  日付が 10 未満の場合は 1 桁、それ以外は 2 桁の日 
DD  2 桁の日 
Mmm 
現在のロケールの MonthAbbr プロパティから取得した月の省略形。以下はその既定値です。
“Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec”
別の月の省略形 (あるいは長さに制限のない名前) は、$ZDATETIMEHmonthlist パラメータとして指定したオプションのリストから取得することができます。 
Mmmmm  MonthName プロパティが指定する月の正式な名前。以下はその既定値です。 “January February March ... November December” 
tformat
時刻の値を表記する形式を指定する数値です。サポートされている値は、以下の通りです。
-1  現在のロケールの TimeFormat プロパティから、有効な tformat 値を取得します。既定は 1 です。tformat を指定しない場合、これが既定になります。 
時刻を "hh:mm:ss" (24 時間) で表します。 
時刻を “hh:mm” (24 時間) で表します。 
時刻を “hh:mm:ss[AM/PM]” (12 時間) で表します。 
時刻を “hh:mm[AM/PM]” (12 時間) で表します。 
monthlist
指定した月名を含む文字列あるいは変数名です。monthlist にある名前は、現在のロケールの MonthAbbr プロパティに指定されている既定の月の省略値を置き換えます。monthlist を使用して、正式な月名や、英語以外の言語の月名、およびその省略名を指定します。
monthlist は、dformat が 2、5、6、7、8、9 の場合のみ有効です。dformat が 1、3、4 の場合、$ZDATETIMEHmonthlist を無視します。
monthlist の最初の文字は、区切り文字を指定します (既定の組み込みリストにある Jan の前に空白を表示します)。各月の名前、もしくは monthlist にある省略名の間に、同じ区切り文字を置く必要があります。この区切り文字は、日付値の年月日の間に置きます。
monthlist を省略、あるいは -1 の monthlist 値を指定すると、$ZDATETIMEH は現在のロケールの MonthAbbr プロパティで定義された月の省略名リストを使用します。既定は以下の通りです。
“Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec”
しかし、dformat が 9 の場合、$ZDATETIMEH は現在のロケールの 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 の数値は、現在より前の年数を示すスライディング・ウィンドウの最初の年を示します。スライディング・ウィンドウは常に、startwin で指定した年の初日 (1 月 1 日) から開始します。
endwin
日付を 2 桁の年で表すスライディング・ウィンドウの最後を指定する数値です。yearopt が 3 あるいは 5 のときは、オプションとして endwin を指定できます。endwin は、その他の yearopt 値では無効になります。
yearopt が 3 のとき、startwin はスライディング・ウィンドウの最後の日付を示す $HOROLOG 形式の絶対日付です。
yearopt が 5 のとき、endwin は、現在の年から後の年数を示すスライディング・ウィンドウで最後の年を示す数値です。スライディング・ウィンドウは常に、endwin で指定した年の 12 月 31 日で終了します。endwin を指定しない場合、既定は、startwin 以降 100 年後の 12 月 31 日です。
endwin を省略、あるいは -1 を指定した場合、スライディング・ウィンドウの有効期限は 100 年間です。
startwinendwin の両方を指定する場合、指定するスライディング・ウィンドウの年数は 100 年以内に収める必要があります。
mindate
有効な日付の下限を指定する数値です。mindate を省略、あるいは -1 を指定すると、現在のロケールの DateMinimum プロパティから下限を取得します。既定は 0 (1840 年 12 月 31 日) です。
maxdate
有効な日付の上限を指定する数値です。maxdate を省略、あるいは -1 を指定すると、現在のロケールの DateMaximum プロパティから上限を取得します。既定は 2980013 (9999 年 12 月 31 日) です。
erropt
このパラメータは、datetime が無効あるいは範囲外の場合に生じるエラー・メッセージを制御します。<ILLEGAL VALUE> あるいは <VALUE OUT OF RANGE> エラー・メッセージを生じる代わりに、関数は erropt を返します。
メモ
$ZDATETIMEH と少数秒
$ZDATETIME とは異なり、$ZDATETIMEH は時刻の精度を指定することはできません。元の $ZDATETIME 時刻形式の小数秒は、$ZDATETIMEH が返す値に保持されます。
$HOROLOG 形式も少数秒を返しません。
$ZDATETIMEH で無効な値
以下の状況では、<FUNCTION> エラーが発生します。
以下の状況では、<ILLEGAL VALUE> エラーが発生します。
以下の状況では、<VALUE OUT OF RANGE> エラーが発生します。
erropt を使用するエラー処理
erropt が指定されている場合、このパラメータは、無効な値あるいは datetime の範囲外の値により生成されるエラー・メッセージのみを制御します。他のパラメータに無効、あるいは範囲外の値を指定することにより発生したエラーは、erropt が指定されたか否かに関係なく、常にエラー・メッセージを生成します。
例えば、endwinstartwin より前にスライディング・ウィンドウを指定すると、$ZDATETIMEH は常に <ILLEGAL VALUE> エラーを生じます。同様に、maxdatemindate より小さい場合、<ILLEGAL VALUE> エラーを生じます。
日付区切り文字
$ZDATETIMEH は、dformat が 1 または 4 のとき、年月日の区切り文字として現在のロケールの DateSeparator プロパティの値を使用します。ODBC 日付形式 (dformat は 3) の区切り文字は、常に ODBC 基準で要求されている “-” です。DateSeparator の既定値は “/” であり、この区切り文字は Caché のすべてのドキュメントで使用されています。
時間区切り文字
既定では、Caché は、現在のロケールの TimeSeparator プロパティ値を使用して、時間の区切り文字を指定します。 既定で、区切り文字列は “:” で、すべての例でこの区切り文字を使用しています。ODBC 日付形式 (dformat が 3) の区切り文字は常に、ODBC 標準に合わせた “:” になります。
少数秒の区切り文字は、小数点 (.) です。
時間接尾語
既定では、Caché は現在のロケールのプロパティを使用して、時間の接尾語名を指定します。$ZDATETIMEH については、これらのプロパティ (および対応する値) は、以下の通りです。
このドキュメントでは、これらのプロパティに常に既定値を使用します。
$ZDATEH と $ZDATETIMEH
$ZDATETIMEH は、$ZDATEH に似ています。$ZDATETIMEH が日付と時刻の値の両方を内部 $HOROLOG 形式に変換するのに対し (時刻値を指定していない場合でも)、$ZDATEH は、日付の値だけを $HOROLOG 形式に変換する点が異なります。 例えば以下のようになります。
   WRITE $ZDATEH("Nov 25, 2002",5)
 
これは、59133 を返します。
   WRITE $ZDATETIMEH("Nov 25, 2002 10:08:09.539",5)
 
これは、59133,36489.539 を返します。
$ZDATETIMEH に値を指定しない場合
   WRITE $ZDATETIMEH("Nov 25, 2002",5)
 
これは、59133.0 を返します。
関連項目