0

我有两个数据库;一个 Oracle 和一个 SQL。他们都有一个名为 person 的表,而 person 包含一个名为 dateofbirth 的字段。我已将 Oracle 日期加载到 VB6 ADODB 记录集 (rs) 中,并将 SQL 日期加载到 VB6 ADODB 记录集 (rs2) 中。该人的出生日期为:1981 年 1 月 11 日。以下语句返回 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 Recordsets 创建 SQL,您可以使用转义序列编写查询并规范化日期格式,以便比较按预期工作

于 2013-07-31T12:38:14.123 回答
0

看起来您将每个都转换为日期,这将比较日期的值而不是它们的字符串。默认情况下,Oracle SQL 将日期存储为“DD-MON-YYYY”,而 SQL Server 将它们存储为 us_en 格式的“DD/MM/YYYY HH:mm:ss”。

于 2013-07-19T20:13:19.033 回答