【问题标题】:C# Date only for SQL linqC# Date 仅适用于 SQL linq
【发布时间】:2021-11-02 12:22:43
【问题描述】:

我在 SQL 中有一个日期字段。我正在从 Excel 中导入一个具有时间日期的字段。当我将该字段推入数据库时​​,它会毫无问题地截断时间。但是,当我尝试使用 Excel 中的日期时间验证行时,我无法查看是否有当前日期的现有记录。我不能只用日期测试

我正在尝试以下方法

DateTime orderdate = new DateTime(PDate.Year, PDate.Month, PDate.Day); ;
           
ExOrder = db.OrderDates.Where(x => x.Customer == Client & x.QDate == orderdate.Date).FirstOrDefault();
ordernum = ExOrder.OrderID;

PDate 正在从调用例程发送。

我怎样才能让 orderdate 只是日期部分?

【问题讨论】:

  • orderdate.Date 在检查条件时会考虑日期部分。意思是,你已经在这样做了。我没有得到你的问题吗?如果QDate 真的在浪费时间,请您检查一下数据库。我怀疑时间到了,这很可能导致条件错误。
  • 如果不知道 Excel 工作表包含的内容、类和属性类型以及实际的表类型,问题和代码就毫无意义。表中的datetime 字段与date 字段不同。
  • 嗨,db.OrderDates QDate--oderdate.Date 搜索添加了小时,因此它永远不会找到需要年、日、月的记录
  • 在这种情况下,您还需要使用x.QDate.Date,而不是条件中的x.QDate。否则请确保小时部分未使用 QDate 附加到数据库中
  • 我正在将 excel 日期列读取为 DateTime.Parse(p[6].ToString() 并且数据库中的字段类型为 Date DateTime orderdate= new DateTime 给我一个日期时间!!

标签: c# linq datetime


【解决方案1】:

您希望仅按日期按记录进行匹配,那么为什么不将 x.QDate 和 orderDate.Date 都设置为相同的仅日期格式呢? 例如db.OrderDates.Where(x => x.Customer == Client & x.QDate.ToString("yyyy-MM-dd") == orderdate.Date.ToString("yyyy-MM-dd")).FirstOrDefault();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-05
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    相关资源
    最近更新 更多