2009年10月13日火曜日

Accsess/MDB 日付リテラルまとめ

今日、授業内で使用することがあったのでメモ。

授業で使用しているDBにはAccess/MDB以外に、
Oracle、MySQLがあります。
Javaで作成したプログラム内でOracle用に作成したSQL文を、
MDBに転用しようとするとエラー発生。
ちなみに、その時のSQL文は以下のもの。
select * 
 from 社員マスタ 
 where 氏名 like '%浦%' 
   and 性別 = 0 
   and 作成日 between '2005/01/01' 
   and '2007/12/31'
最初は、列名に「[]」が無いせいなのかと思いましたが、反応無し。 仕方がないので調べてみると、MDB特有の日付リテラルに行き着きました。 MDBでのBETWEENについて ※リンク先を間違えていたので修正。 つまりは、MDBでは「'2005/01/01'」という書式が、 日付型でなく文字列型で扱われるということですね。 なので、「between a and b」など日付を扱う場合には、 「#2005/01/01#」とし、型変換する必要があります。 以下が処理成功時のSQL文です。
select * 
 from 社員マスタ 
 where 氏名 like '%浦%' 
   and 性別 = 0 
   and 作成日 between #2005/01/01# 
   and #2007/12/31#
正直分かりづらいなぁ、と。

0 件のコメント:

コメントを投稿