c# - 如何从数据库中获取最接近的日期时间?

标签 c# sql-server linq entity-framework

我的数据库中有以下日期时间。如果我当前的系统日期时间是“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/

相关文章:

c# - LINQ to Entities/LINQ to SQL : switching from server (queryable) to client (enumerable) in the middle of a query comprehension?

c# - 在 LINQ to Entities 中,您如何订购如下?

c# - 如何使用 Regex.Replace 从字符串中删除数字?

c# - .NET 命名空间之间的共享类,如何分配它们?

sql-server - 异构查询需要为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这确保了一致的查询语义

c# - 在 SelectMany 方面需要一些帮助

c# - 测试扫描文档上的复选框是否已勾选的正确方法是什么?

c# - 模拟海水,需要计算复杂的值

sql-server - SQL Server 无法创建外键时,能否告诉您它找到了哪些路径?

sql-server - 如何从 xml 节点中提取数据作为列中的表?