MS Access中的DateTime格式

时间:2009-10-04 08:48:32

标签: c# ms-access datetime

我开发了一个模块并将数据存储到MS Access数据库(mdb)中。一个字段使用DateTime名称(Date_of_Installation)作为参考。记录保存完好。当我使用OleDBDataAdaptor检索记录来填充DataSet时,datetime的问题是将数据库中的格式更改为如何更改DB中的日期时间格式。 查询示例

  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视觉工作室。如何使用Linq?

1 个答案:

答案 0 :(得分:7)

如果我理解你想要做什么,你想使用OleDb适配器将DataSet填充到MS Access,然后使用上面的查询过滤该DataSet。这是对的吗?

如果是这样,那么返回的DataSet中的日期列应该包含DateTime类型,您应该能够使用LINQ查询DataSet。 Click here有关如何执行此操作的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;

FYI instr(1,"+ArgName+",'" + Value + "')返回一个int,它是从位置1开始的ArgName中Value的位置,如果未找到则返回零。如果将它们作为字符串文字给出,它将只返回零,Access可能在Where子句中将其解释为false并且不返回任何结果。如果你想在C#中获取一个字符串的位置,请使用string.IndexOf(),如果你想知道一个字符串是否包含另一个字符串,请使用string.Contains()另请注意Access中的between..and包含起始/终点,就像上面的LINQ一样。