日時型は、日時、日付のみ、または時刻のみを保持できます。日付型は日付のみを保持し、時刻型は時刻のみを保持します。日付型と時刻型は日時型より効率的なので、日時型の機能と柔軟性を必要としない場合には有効です。
日時リテラルを使用すると日時型の値を直接作成できます。日時リテラルは、日時を 2 つの # 記号で囲んで入力すると作成できます。さまざまな書式がサポートされています。
注 日時リテラルを複数行に分けることはできません。
例
#1976/8/6 1:20 am# #Aug 6, 1976# #Aug 6 1976 13:20:19# #Aug 6 1976 1:30:15 午後# #8/6/1976# #10:20 午前am#
#10:20 am# は時刻型のように見え、#1976/8/6# は日付型のように見えますが、そうではありません。これらはどちらも日時型であり、すべての日時リテラルは日時型になります。たとえば、#10:20 am# は、日付部分が NULL の日時型の値と見なすことができます。これを時刻型に変換するには、CTime(#10:20 am#)を使用します。
日時リテラルの代わりに、CDateTime を使用して、文字列を日時に変換することができます。次がその例です。
CDateTime ("8/6/1976 1:20 am") CDateTime ("10:20 am")
ただし、日時リテラルと CDateTime の使い方には重要な相違点があります。日時リテラルは、常に英語(U.S.)の日付書式を使用し、Crystal Reports を実行している特定のコンピュータの地域の設定を使用しません。したがって、上の日時リテラルの例は、どのコンピュータでも機能します。一方、日本のシステムでは、次のように日時型を作成できます。
CDateTime ("1997 年 8 月 22 日") //#Aug 22, 1997# と同じ
日付型の値は CDate で、時刻型の値は CTime で作成できます。次がその例です。
CDate ("Aug 6, 1969") CDate (1969, 8, 6) //年、月、日を指定します //日時型の引数を日付型に変換します CDate (#Aug 6, 1969#) CTime ("10:30 am") CTime (10, 30, 0) //時、分、秒を指定します CTime (#10:30 am#)