今日、授業内で使用することがあったのでメモ。 授業で使用している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#正直分かりづらいなぁ、と。
ホーム > ソース > Accsess/MDB 日付リテラルまとめ
0 件のコメント:
コメントを投稿