MS Access 中的日期时间格式

4

我开发了一个模块,并将数据存储到 MS Access 数据库(mdb) 中。其中一个字段使用日期时间名称(Date_of_Installation)作为参考。记录被成功存储。当我使用 OleDBDataAdaptor 检索记录以填充 DataSet 时,遇到了一个问题,即日期时间格式在数据库中发生了变化,如何更改数据库中的日期时间格式。 查询示例:

  command.CommandText = "Select * from LicenseDetails where 
    instr(1,"+ArgName+",'" + Value + "') and Date_of_Installation between 
#06/08/2009 1:31:10 PM# and #10/09/2009 2:54:57 PM#;

我正在使用2005版的Visual Studio。如何使用Linq?

1个回答

7
如果我理解你想做的事情正确的话,你想使用OleDb适配器将DataSet填充到MS Access中,然后使用上面的查询来过滤该DataSet。是这样吗?
如果是这样的话,那么你返回的DataSet中的日期列应该包含DateTime类型,并且你应该能够使用LINQ来查询该DataSet。点击此处查看ADO.NET博客文章以了解如何执行此操作。
你的LINQ表达式可能类似于:
var query = from r in MyDataSet.Tables["LicenseDetails"].AsEnumerable()
    where r.Field<DateTime>("Date_of_Installation") >= new DateTime(6,8,2009,13,31,10) 
    && r.Field<DateTime>("Date_of_Installation") <= new DateTime(10,9,2009,14,54,57) 
    select r;

提供信息,instr(1,"+ArgName+",'" + Value + "') 返回一个整数,该整数是从位置1开始在ArgName中找到Value的位置,如果未找到,则返回零。如果它们作为字符串文字给出,它将只返回零,Access可能会将其解释为Where子句中的false并返回零结果。如果您想在C#中获取一个字符串在另一个字符串中的位置,请使用string.IndexOf(),如果您想查找一个字符串是否包含另一个字符串,请使用string.Contains()。还要注意,Access中的between..and包括起点和终点,就像上面的LINQ一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接