MS Access中的DateTime格式

Siv*_*SPL 4 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#;
Run Code Online (Sandbox Code Playgroud)

我正在使用2005视觉工作室.如何使用Linq?

Dal*_*ale 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;
Run Code Online (Sandbox Code Playgroud)

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