[seasar-dotnet:651] Re: ORACLEのDate型のWHERE句について

Ryo Miyagi [E-MAIL ADDRESS DELETED]
2007年 11月 16日 (金) 09:48:44 JST


清末さん

宮城です。

表題の件ですが、
ログに出力しているSQLと
実際にOracleに発行しているSQLは違います。

ログに出力しているSQLは、ログ表示用に日付文字列をフォーマットしており、
日付文字列のフォーマットは、
Seasar.Extenstion.ADO.Impl.BasicCommandFactoryクラスの
SqlLogDateFormatプロパティ及びSqlLogDateTimeFormatプロパティで
変更することが可能です。

Oracleに発行しているSQLは、
バインド変数を使用してDate型カラムの値を設定しています。

従って、Date型カラムの値が一致すればデータの取得が可能ですので
DBのカラムをTO_CHARする必要はありません。
別の要因で取得できていないかと思います。

原因を考えてみますので
お手数ですが、下記の情報を教えていただけないでしょうか。
・Oracleのバージョン
・Oracle Data Provider for .NET のバージョン
・S2Dao.netのバージョン
・OracleのDATE型カラムの定義
 (例: TBCOL2   DATE NULL)
・OracleのDATE型カラムに対する.NETのプロパティの定義
 (例:private System.DateTime tbcol2)

以上、宜しくお願いします。

07/11/15 に KIYOSUE Minoru<[E-MAIL ADDRESS DELETED]> さんは書きました:
> お世話になっております、清末です。
>
> S2を使用した開発が、定着しつつあり、自分としては大変嬉しく思っている今日で
> す。
>
> さて、ORACLEを使用したプロジェクトでS2を使用する事となり、現在コーディングを
> 開始しておりますが、Oracle の Date型カラムがWHERE句に含まれる自動生成SQL
> で質問があります。
>
> ログを見ると
>
> SELECT
>    ・・・・・・・・・・
> FROM
>    TABLEA
> WHERE
>    TBCOL1  = 'XXXXXXXXX'  AND
>    TBCOL2  = '2007-11-15 12.17.20'
>
> (TBCOL2がDate型のカラムです)
>
> となっており、接続には、ODP.netを使用いたしております。
>
> 該当のRowが存在していますが、結果は、Nothingで戻ってきます。
>
> Oracleの場合、SQL上リテラル文字側をTO_DATEするか、DBのカラムをTO_CHARする
> 必要があるのではないかと思うのですが、S2Dao.net(または、ODP.netの仕様?)では
> 上記のSQLで取得可能なのでしょうか?
>
> ご多忙中大変恐縮ですが、よろしくお願い申し上げます。
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


-- 
Ryo Miyagi


seasar-dotnet メーリングリストの案内