使用 Linq 比较两个 sql 日期
Compare two sql dates using Linq
我需要比较 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;
好吧,这是解决问题的非常肮脏的方法(如果没有索引,性能可能很差)但它应该有效:
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;
我想你明白了。
我需要比较 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;
好吧,这是解决问题的非常肮脏的方法(如果没有索引,性能可能很差)但它应该有效:
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;
我想你明白了。