我有一个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); }
好的 -
我相信问题是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”;我不知道“日期时间”),请尝试一下。