我的数据库中有以下日期时间。如果我当前的系统日期时间是“2012-11-24 03:50:00.000”,那么应该输出为第三条记录。如何通过 linq 查询获取它?
1 2012-11-24 01:00:00.000 35466 True False
2 2012-11-24 01:00:00.000 35466 True False
3 2012-11-24 01:15:00.000 35466 True False
4 2012-11-23 01:10:00.000 65456 True False
最佳答案
如果您绝对不必在服务器端执行查询,那么以下伪代码方法将起作用:
foreach value in the data set
let distance = absolute value of ( data point - target data value )
sort by distance, ascending
choose first
在 C# 中,您可以使用 DateTime.Substract
方法轻松计算时间间隔,并获取返回的 TimeSpan
对象的 Days
的绝对值> 例如,属性(property)。
我不太擅长 SQL 日期操作,但我相信您可以在服务器端执行类似的操作,类似于:
select * from table, abs(Datediff(datecolumn.table, sysdatetime)) as distance
order by distance
然后使用第一个值。
抱歉,我刚刚注意到您想要 LINQ 格式,这样您就可以将服务器端和客户端工作结合起来 - 与此类似:
(from q in datacontext.Table
let distance = Math.Abs(q.Date.Subtract(DateTime.Today).Ticks)
orderby distance
select q).First();
关于c# - 如何从数据库中获取最接近的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540312/