【问题标题】:Getting Later Date from Database without counting Filtered date从数据库中获取以后的日期而不计算过滤日期
【发布时间】:2019-10-27 13:47:04
【问题描述】:

我正在尝试通过以下查询从数据库中获取“更大”/更晚的日期

控制器

string str = "2019-10-27T20:44:55.323";
DateTime Date = Convert.ToDateTime(str);

var List = (from a in dbcontext.system_notification where a.notification_date  > Date select a).ToList();

输出

我仍然从 date "2019-10-27T20:44:55.323" 得到结果。 我希望从我使用“>”运算符以来给出的日期中只获得 Later date

谢谢!!

【问题讨论】:

  • 这些对您有帮助吗?

标签: c# asp.net asp.net-mvc entity-framework linq


【解决方案1】:

DateTime 结构将日期表示为一个 64 位数字,用于测量自特定开始日期以来的“滴答”数。一千万滴答等于一秒。

见:https://blogs.msdn.microsoft.com/ericlippert/2010/04/08/precision-and-accuracy-of-datetime/

现在,将其与 data types of MS SQL 进行比较:

日期时间精度:0.00333 s [默认值]

datetime2 精度:100 ns


因此,最有可能的是,您的数据库中的值实际上是明显的、更大的或四舍五入的。

您可以通过检查 delta 来测试:

foreach (var dt in List)
{
   var delta = Date - dt;
   // check the value.
}

【讨论】:

  • 我明白了,我只知道。但是这种情况有什么解决方案吗?如何从结果中排除过滤日期?
  • 嗯,你的c#DateTime相当于sqlDateTime2。因此,您需要调整字符串以匹配下一个可用值。如果您需要这种精度,您可能还需要更改 sql 类型。
【解决方案2】:

你可以试试这个:

您应该避免使用保留字或关键字作为变量名。

string str = "2019-10-27T20:44:55.323";
DateTime dt = Convert.ToDateTime(str);

var lst = dbcontext.system_notification.where(x => x.notification_date > dt).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2016-10-21
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多