0

2 つのデータベースがあります。1 つの Oracle と 1 つの SQL です。どちらにも person というテーブルがあり、person には dateofbirth というフィールドが含まれています。Oracle の日付を VB6 ADODB レコードセット (rs) にロードし、SQL の日付を VB6 ADODB レコードセット (rs2) にロードしました。問題の人物の生年月日は 1981 年 11 月 1 日です。次のステートメントは false を返します。

If rs("DateOfBirth") = rs2("DateOfbirth") then
   return true
else
   return false
end if

以下は TRUE (正しく) を返します。

If datevalue(rs("DateOfBirth")) = datevalue(rs2("DateOfbirth")) then
       return true
    else
       return false
    end if

生年月日が等しいのに、最初に FALSE を返すのはなぜですか?

十分なコードを投稿していない場合はお知らせください。さらに追加します。

4

2 に答える 2

0

SQL か Oracle のどちらを対象としているかに関係なく、クエリを操作するための便利な関数セットがあります。それらは「ODBC Escapae Sequences」という名前で使用され、MS ドキュメントの説明はここにあります。

したがって、vb6 コードで rs および rs2 レコードセットの両方の SQL を作成していると仮定すると、エスケープ シーケンスを使用してクエリを記述し、日付形式を正規化して、比較が期待どおりに機能するようにすることができます。

于 2013-07-31T12:38:14.123 に答える
0

それぞれを日付としてキャストしているように見えます。これは、日付の文字列ではなく、日付の値を比較します。Oracle SQL はデフォルトで日付を「DD-MON-YYYY」として保存しますが、SQL Server は「DD/MM/YYYY HH:mm:ss」として us_en 形式で保存します。

于 2013-07-19T20:13:19.033 に答える