小编典典

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

sql

我有一个DBF文件,正在尝试从C#代码读取它。我可以在不对varchar类型字段应用任何条件或条件的情况下成功读取文件。我的问题是我必须从Date字段(type: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

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

SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between '2/16/2006 12:00:00 AM' and '2/20/2006 12:00:00 AM'

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

SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 and 2/20/2006

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

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);
}

阅读 224

收藏
2021-04-19

共1个答案

小编典典

好的 -

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

解决方法:

@"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”;我不知道“日期时间”),请尝试一下。

2021-04-19