我正在尝试解决动态生成SQL的过时报告工具中的错误,并且我遇到了一个问题,当生成的SQL从Dbase表中查询Date字段时,我遇到数据类型不匹配错误。 / p>
我设法在一个简单的测试应用程序中复制相同的问题,其中将以下查询加载到TADOQuery并激活。
SELECT *
FROM [QPERFSAL.DBF] QPERFSAL
WHERE ( QPERFSAL.PERFDATE = '21/01/2014' )
它显然与日期格式有关,但我尝试了很多格式,但我仍然得到错误 例如dd / mm / yyyy,mm / dd / yyyy,yyyy / mm / dd等。
明显的解决方法是使用参数化查询,但由于这是由报告工具动态生成的,我不能使用参数:(
是否有我遗漏的东西,或者我可以在ADO连接中指定日期格式吗?
谢谢!
答案 0 :(得分:1)
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 )
答案 1 :(得分:0)
尝试使用如下:
SELECT *
FROM [QPERFSAL.DBF] QPERFSAL
WHERE ( DTOC(QPERFSAL.PERFDATE) = '01/21/2014' )
答案 2 :(得分:0)
首先,感谢所有发布的建议。 唉,我尝试过但都没有成功:(
谢天谢地,我在搜索不相关的东西时找到了解决方案。 SELECT *
FROM [QPERFSAL.DBF] QPERFSAL
WHERE PERFDATE = Format('2014/12/06',"YYYY/MM/DD")
我不确定这会对本地化产生什么影响,但至少我可以让查询立即运行。