如果Oracle date = SQL date

时间:2013-07-19 20:07:22

标签: vb.net vb6

我有两个数据库;一个Oracle和一个SQL。他们都有一个名为person的人,而person则包含一个名为dateofbirth的字段。我已将Oracle日期加载到VB6 ADODB Recordset(rs)中,并将SQL日期加载到VB6 ADODB Recordset(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?

如果我没有发布足够的代码,请告诉我,我会添加更多代码。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

有一组方便的函数可用于处理查询,无论它们是针对SQL还是Oracle。它们名为'ODBC Escapae Sequences',可以找到MS文档中的描述here

因此,假设您在vb6代码中为rs和rs2 Recordset创建SQL,您可以使用转义序列编写查询并规范化日期格式,以便比较按预期工作