如何查询where和between子句中的DBF(dbase)文件日期类型字段

use*_*810 5 c# sql dbf dbase

我有一个DBF文件,正在尝试从C#代码读取它。我可以成功读取文件而无需对varchar类型字段应用任何条件或条件。我的问题是我必须从Date字段(类型:date)中过滤记录。我尝试过以下方法

SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 12:00:00 AM and 2/20/2006 12:00:00 AM
Run Code Online (Sandbox Code Playgroud)

上面给出了语法错误:缺少运算符

SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between '2/16/2006 12:00:00 AM' and '2/20/2006 12:00:00 AM'
Run Code Online (Sandbox Code Playgroud)

上面给出了数据类型不匹配错误

SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 and 2/20/2006
Run Code Online (Sandbox Code Playgroud)

上面的方法不会引发任何异常,但是尽管有匹配的记录,但不会返回任何记录。

where子句也发生相同的情况。我该怎么做才能过滤范围内的记录

我正在使用以下代码阅读

OdbcCommand cmd = new OdbcCommand();
OdbcDataAdapter da = new OdbcDataAdapter();
DataTable dt = new DataTable();

using (OdbcConnection connection = new OdbcConnection(connstring))
{
   connection.Open();
   cmd = new OdbcCommand(@"SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 12:00:00 AM and 2/20/2006 12:00:00 AM", connection);
   cmd.CommandType = CommandType.Text;

   da.SelectCommand = cmd;
   da.Fill(dt);
}
Run Code Online (Sandbox Code Playgroud)

pau*_*sm4 3

好的 -

我相信问题是 dBase/xBase 不支持 SQL 日期的“Between”

解决方法:

@"SELECT * FROM D:\DBFreader\file.dbf where [RDATE] >= #2/16/2006 12:00:00 AM# and [RDATE] < #2/20/2006 12:00:00 AM#"

PS:我知道 dBase 语法支持“日期”文字(例如“2/16/2006”;我不知道“日期时间” - 请尝试一下看看。