【问题标题】:DateTime format with Entity Framework实体框架的日期时间格式
【发布时间】:2018-08-14 06:33:37
【问题描述】:

有人可以解释它是如何工作的吗?我需要将 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 格式时,如何比较日期?

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

【问题讨论】:

    标签: c# entity-framework datetime


    【解决方案1】:

    我只需要相同的格式

    不,你没有。您需要最合适的数据类型,即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,但这是一个稍微不同的问题。)

    【讨论】:

    • 但这里还有一个问题。如果我尝试为输入提供格式,那么结果将是一个字符串。示例:字符串正确日期 = date.ToString("dd/mm/yyyy")。不将值转换为字符串如何格式化?
    • @user2195741:当然,当您格式化时,您需要转换为字符串。但是您的问题是如何执行 查询,而您不需要为此进行格式化。
    【解决方案2】:

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

    • Date.Now 将始终包含调用函数的当前时间。
    • Date.Today 将始终将时间设置为 00:00:00,因此在您比较日期时不会干扰。

    您需要检查代码的第一件事是确保您只使用 Date.Today。

    现在,当我查看您的示例时,我没有发现任何问题。

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

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

    我们走吧,让我们再比较一下:

    db.dates.Where(x=>x.StartDate

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

    2012-02-13 12:00:00 am

    当你比较 x.StartDate

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 2018-04-25
      • 2021-11-11
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多