实体框架的日期时间格式

3 c# datetime entity-framework

有人可以解释它是如何工作的吗?我需要将 SQL Server 中的 DateTime 与用户输入进行比较。

这是我正在寻找的示例:

DateTime[] dates = { DateTime.Now, DateTime.UtcNow };
Console.WriteLine(dates.Where(x => x < DateTime.Now));    // I need to know if they are the same without converting them to strings. 
Console.Read();
Run Code Online (Sandbox Code Playgroud)

我正在使用实体框架,在实体类中Dates,属性是 DateTime,我需要将它与用户的输入进行比较,我找到的唯一解决方案是 CreateDate 函数。

如您所知,我无法直接将 POST 值与 Date 属性进行比较。例子:

db.dates.Where(x => x.StartDate < "2012-02-13 00:00:00.000")    // error, cannot compare DateTime with string
Run Code Online (Sandbox Code Playgroud)

所以,我尝试将值转换为 DateTime:

DateTime start_date = Convert.ToDateTime("2012-02-13 00:00:00.000");
db.dates.Where(x => x.StartDate < start_date )    // PROBLEM!!
Run Code Online (Sandbox Code Playgroud)

为什么?那么,输出start_date是:

2012-02-13 12:00:00 am
Run Code Online (Sandbox Code Playgroud)

但是在数据库中,结束和开始日期如下:

2012-02-13 00:00:00.000    // all have zeros at the end
Run Code Online (Sandbox Code Playgroud)

当输入日期为2012-02-13 00:00:00.000格式时,如何比较日期?

我不在乎使用什么,我只需要相同的格式和相同的数据类型。

Jon*_*eet 5

我只需要相同的格式

不,你没有。您需要最合适的数据类型,即DateTime(或者可能是DateTimeOffset)并且您需要忘记字符串格式。

“2012-02-13 12:00:00 am”只是该值的不同文本表示,也可以表示为“2012-02-13 00:00:00.000”。两者都代表 2012 年 2 月 13 日的午夜。只要您的数据库字段是合适的DateTime类型,就完全没有关系。你真的不需要担心格式。

可能需要担心这些值是 UTC 时间还是本地时间,但这是另一回事。

(我个人会使用DateTime.ParseorDateTime.ParseExact而不是Convert.ToDateTime,但这是一个稍微不同的问题。)