Accessの日付処理はWindowsのロケール設定に依存しているが不完全なので問題を回避できない場合があるっぽい?
もう手もとにOffice 365 Soloなくて(仕事終わったんで解約した)、検証できないのでいろいろアレだけど一応書いておく。
AccessでGUIから日付を取得しようとすると、Windowsのロケールに依存した形式で返ってくるようなのだが、これを適切に取り扱う方法がない。
タスクバーの時計に曜日を表示したいので日付の短い形式のフォーマットを、yyyy/MM/dd '('ddd')'
にしていたところ問題が出たのでいろいろ調べてみたのだが、AccessではWindowsに元から用意されていて選択可能ないくつかのフォーマット以外には対応していないようだ。
たとえば上記の場合日付は、2019/03/15 (金)
のような形で表示されるが、これをFormat()
の第1引数に入れても無視されるし、CDate()
では型が違うとエラーになる。
具体的に試したコード、多分だけどこんな感じだったはず。
SELECT Format(#2019/03/15 (金)#, 'yyyy/MM/dd')
'2019/03/15 (金)'
がそのまま返る。Format()
関数はどうも、認識できないデータを渡すとそのまま返す?
SELECT CDate(#2019/03/15 (金)#)
これはエラーになる。
Windowsの設定を変更すればもちろん回避できるが。