我有一个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)
好的 -
我相信问题是 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”;我不知道“日期时间” - 请尝试一下看看。
| 归档时间: |
|
| 查看次数: |
14296 次 |
| 最近记录: |