我有两个数据库;一个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?
如果我没有发布足够的代码,请告诉我,我会添加更多代码。
答案 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,您可以使用转义序列编写查询并规范化日期格式,以便比较按预期工作