【问题标题】:Compare two sql dates using Linq使用 Linq 比较两个 sql 日期
【发布时间】:2015-01-16 15:07:15
【问题描述】:

我需要比较 SQLServer 上的两个日期,以查看用户在系统上注册 10 秒后是否已经登录,但是当我尝试这个查询时,它给了我一个

NotSupportedException [System.NotSupportedException] = {"System.DateTime AddSeconds(Double)"}

查询:

var query = from user in this.Query()
            where (user.LastLoginDate.AddSeconds(-10) <= user.CreateDate) 
            select std;

【问题讨论】:

  • Linq-To-Sql 还是 Linq-To-Entities?
  • 问题是我正在比较两个 SQLDates。它是 linq-to-sql
  • 这不是问题。在 LINQ-to-SQL 中它是受支持的。目前尚不清楚 OP 的标签是否正确,并且在接受的答案下方有一条模糊的评论“我设法改变了要求”。投票结束,因为不可复制。

标签: c# sql linq datetime linq-to-sql


【解决方案1】:

这里真的很脏(如果你没有索引,可能性能很差)解决你的问题的方法,但它应该工作:

var query = from user in this.Query()
            where ((user.LastLoginDate.Date == user.CreateDate.Date
                && user.LastLoginDate.Hour == user.CreateDate.Hour
                && user.LastLoginDate.Minute == user.CreateDate.Minute
                && user.LastLoginDate.Second <= user.CreateDate.Second + 10)
                ||(user.LastLoginDate.Date == user.CreateDate.Date
                && user.LastLoginDate.Hour == user.CreateDate.Hour
                && user.LastLoginDate.Minute + 1 == user.CreateDate.Minute
                && 60 - user.CreateDate.Second + user.LastLoginDate.Second <= 10)) 
            select std;

我想你明白了。

【讨论】:

  • 你能说,对你有帮助吗?
  • 是的,这可行,但它很复杂,但我设法改变了要求,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多