- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パラメータクエリでの範囲検索方法)
パラメータクエリでの範囲検索方法
このQ&Aのポイント
- VB.NET2005とOracle10gで開発をしており、セキュリティー対策のためパラメータクエリを使用しています。しかし、範囲検索ができずに困っています。
- パラメータクエリでの日付範囲検索の経験のある方からのアドバイスをお願いします。
- TableAにはUpdateTime列がTimestamp型で、2007/01/23と2007/01/24の二つのレコードがあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
比較する日付の表現が異なる、だと思いますよ。 10gに触れていないので、SQLPLusで、Timestanp型の列を参照してお試しください。 1)select UpdateTime from Table1 where条件は適当に。 2)select to_char(UpdateTime, 'yyyy/mm/dd hh24:mi:ss') from Table1 where条件は適当に。 1)の結果では日付のみのはず。しかし内部では時刻も持ち合わせているはず。 2)の結果では 2007/01/23 17:36:51 のような結果になるはず。 ("UpdateTime","2007/01/23")の部分を (TO_CHAR("UpdateTime", 'yyyy/mm/dd'), "2007/01/23")にするとどうなりますか?
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
回答No.1
Oracleは8iくらい、VBはVer6位の知識なんですが。 > UpdateTime列のデータ型はTimestampです。 元が英語圏のソフトですから、日付書式が正しくない、が原因でしょう。 Oracle側ならto_char()で、Access系なんかだったらFormat()で 希望の書式の「文字列」に変換して評価するのが確実かな。 where to_char(UpdateTime, 'yyyy/mm/dd') >= :UpdateTime and to_char(UpdateTime, 'yyyy/mm/dd') <= :UpdateTime しかし、列名とパラメータ名とが同じで良いのでしょうか?
補足
列名とパラメータ名は同じでもできました。 BindByName=Trueでパラメータ名が重複するほうがだめなのでしょか?