通过德尔福 ADO 查询查询 DBase 日期字段时的数据类型不匹配



我正在尝试解决动态生成 SQL 的古老报告工具中的一个错误,并且我遇到了一个问题,当生成的 SQL 从 Dbase 表中查询日期字段时,我遇到了数据类型不匹配错误。

我已经设法在一个简单的测试应用程序中复制了同样的问题,其中以下查询被加载到 TADOQuery 中并激活。

SELECT *
FROM [QPERFSAL.DBF] QPERFSAL
WHERE  ( QPERFSAL.PERFDATE = '21/01/2014' )

它显然与日期格式有关,但我尝试了多种格式,但我仍然收到错误例如

日/月/年、月/日/年、年/月/日等。

显而易见的解决方法是使用参数化查询,但由于这是由报告工具动态生成的,因此我不能使用参数:(

我是否缺少某些内容,或者我可以在 ADO 连接中指定日期格式吗?

谢谢!

VFP OleDB 提供程序我相信还可以识别 DATE() 函数,您不需要担心 yyyy-mm-dd 或 mm-dd-yyyy 或 dd-mm-yyyy 格式。 它将构建到适当的日期格式列中。

where QPERFSAL.PERFDATE = date( 2014, 1, 21 )

现在,如果"perfDate"列是日期/时间列,则需要使用 TTOD()(时间到日期函数)根据日期/时间字段的仅日期部分进行比较

where TTOD( QPERFSAL.PERFDATE ) = date( 2014, 1, 21 )

尝试按如下方式使用:

SELECT *
FROM [QPERFSAL.DBF] QPERFSAL
WHERE  ( DTOC(QPERFSAL.PERFDATE) = '01/21/2014' )

首先,感谢所有发布的建议。唉,我都试过了,但没有成功:(

值得庆幸的是,我在搜索不相关的东西时找到了解决方案。

    SELECT *
    FROM [QPERFSAL.DBF] QPERFSAL
    WHERE PERFDATE = Format('2014/12/06',"YYYY/MM/DD") 

我不确定这会对本地化产生什么影响,但至少我现在可以让查询运行。

最新更新