DateTime格式与实体框架

本文关键字:框架 实体 格式 DateTime | 更新日期: 2023-09-27 18:08:09

谁能解释一下它是如何工作的?我需要比较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();

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

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

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

因此,我尝试将值转换为DateTime:

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

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

2012-02-13 12:00:00 am

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

2012-02-13 00:00:00.000    // all have zeros at the end

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

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

DateTime格式与实体框架

我只需要相同的格式

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

"2012-02-13 12:00:00 am"只是值的另一种文本表示形式,也可以表示为"2012-02-13 00:00:00.000"。都代表2012年2月13日的午夜。只要您的数据库字段是合适的DateTime类型,这应该无关紧要。你真的不用担心格式。

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

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

当您使用DateTime时,首先需要确定在比较时是否要使用日期和时间。如果您想要包含时间,那么您需要添加Date。现在来初始化变量。如果不想包含时间,只比较数据的日期部分,则需要使用 date . today

  • 日期。现在将始终包含函数被调用的当前时间。
  • 日期。今天将始终将时间设置为00:00:00,因此当您比较日期时它不会干扰。

你需要签入代码的第一件事是确保你只使用Date.Today.

现在当我看你的例子时,我觉得没有任何问题。

因此,我尝试将值转换为日期时间

DateTime star_date = Convert。ToDateTime("2012-02-13 00:00:00.000");

让我们再比较一下:

db.dates.Where (x => x。StartDate可以& lt;start_date)//问题! !

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

2012-02-13 12:00:00 am

当你比较x.StartDate <在Start_date中,没有数据是正常的,因为"2012-02-13>