• 締切済み

日付?の比較で質問があります。

バインド値1:2008/10/30 20:00(文字列) DB値A:有効開始日:20081002(char),有効終了日:99991231(char) DB値B:有効開始日:20081010(char),有効終了日:99991231(char) DB値C:有効開始日:20081010(char),有効終了日:99991231(char) DB値D:有効開始日:20081029(char),有効終了日:99991231(char) where句でバインド値1 between 有効開始日 and 有効終了日としました。 単体試験で形式のミスに気付かず、また試験結果も全て取得できていたのですが、先日取得できないレコードがある事が分かりました。 本番環境の取得結果が上記のA,B,Dで、Bと同じデータなのにCが取得できません。 なぜ同じ条件で取得できるレコードとできないレコードがあるのかが 不明です(いっそ全部取れない or 全部取れるなら合点もいくのですが・・・)。 ※実際のSQLはもう少し煩雑ですが、条件式を一つずつ確認して上記の部分が問題である事までは確認しました。 情報がこれでは不足かもしれませんが、宜しくお願い致します。

みんなの回答

回答No.1

文字列比較なのは致し方ないとして、桁数と書式が違う要素をBETWEENで評価するんですか?? まともな結果を期待すること自体、間違っているように思いますけど。 >なぜ同じ条件で取得できるレコードとできないレコードがあるのかが >不明です(いっそ全部取れない or 全部取れるなら合点もいくのですが・・・)。 この手の理不尽な結果って、オラクルのバグによる、という可能性が高いように思いますが オラクルのバグって、サポート契約ユーザ以外には公開しない、サポート契約ユーザは、情報を 公開してはならないというサポート契約義務があるので、表に出にくいです。 ※サポート情報を確認したわけではないので、実際に、バグかどうかは判りません。

noname#106112
質問者

お礼

回答有難うございます。 いえ、書式等が異なる為、実装時の間違いで修正しなければいけないのですが、原因と対応を説明する際に、「書式が異なりましたので取得できないレコードがありました」とした場合に、「同じデータで取得有無があるけど、本当に書式が原因? 書式が原因ならどっちも取得できないか、取得できるかじゃないの?」と聞かれる事があるのです。 ですので、修正するのは前提なのですが、何故質問のような状態になってしまうのかが知りたかったのです。

関連するQ&A