4Dでは,日付リテラル(定数)をメソッドエディターに記述することができます。
$日付:=!1920-06-30!
ドキュメントに記述されているように,日付リテラルのフォーマットはv15で改定されました。
- 区切り文字はハイフン(
-
) - 年月日の順序は
YYYY-MM-DD
- 空の日付は
00-00-00
過去のバージョンでは,区切り文字と年月日の順序はシステムのロケール(地域と言語)設定に左右されました。世界的にみて,もっとも一般的なフォーマットは「日月年」または「月日年」,区切り文字はピリオド(.
)またはスラッシュ(/
)記号というものです。
メソッドに入力された日付リテラルは,トークナイズされ,内部的に「年・月・日」に分解されて保存されます。システムのロケールが違う環境でメソッドを開いた場合,日付リテラルのフォーマットは自動的に変換されますが,コピー&ペーストをしたり,メソッドのソースコードをテキスト形式でインポートした場合は,別の値になってしまう恐れがあります。
日本のように「年月日」という順序を採用しているロケールはあまり多くありません。また,区切り文字にハイフン記号を使用しているロケールも,スウェーデン語など,ごく少数です。大抵の地域では,日付リテラルの仕様がv15で変更されたことにすぐに気づきましたが,日本の場合,以前の仕様がISOフォーマットに似ているため,変更に気づかなかったかもしれません。
メソッドエディターにピリオド(.
)またはスラッシュ(/
)区切りで日付リテラルを入力した場合,トークナイズにより,区切り文字が自動的に変換されてハイフン(-
)になります。同時に,2
桁で入力された年は自動的に4
桁に変換されます。
!20/6/30!
→!2020-06-30!
!20.6.30!
→!2020-06-30!
SET DEFAULT CENTURY
でデフォルト世紀を変更しない限り,29
年以前の日付は21世紀,30
年以降の日付は20世紀,とみなされます。
両方の区切り文字にハイフン(-
)を入力した場合,2
桁で入力された年はトークナイズで4
桁に変換されません。下記の例では,1世紀の日付を入力したことになります。
!20-6-30!
→!20-06-30!
当然,この日付で検索を実行した場合,1920年あるいは2020年のレコードはヒットしません。
メソッド日付リテラルを記述する場合,下記いずれかの方法で入力するように注意してください。
- 区切り文字はピリオド(
.
)またはスラッシュ(/
)を使用する(4
桁に変換されます) - 区切り文字はハイフン(
-
)を使用するのであれば,年を4
桁で入力する