如何找到最近的日期?

4

我有一个类似于这样的架构:

CREATE TABLE [dbo].[CdCl](
    [Id] [int] NOT NULL,
    [SubId] [varchar](15) NULL,
    [ReadTime] [datetime] NOT NULL,
    [ActualPower] [real] NOT NULL
)

以下是数据示例:

enter image description here

我正在处理一个查询,需要实现以下功能,但不知道最佳方法:

  1. 如果Where子句包含'5/1/2013 10:34:09'的ReadTime,则返回高亮记录,因为它是完全匹配。

  2. 如果Where子句包含'5/1/2013 10:34:11'的ReadTime,则返回高亮记录,因为它是最近的匹配项。

  3. 如果Where子句包含'5/1/2013 10:34:14'的ReadTime,则返回包含'5/1/2013 10:34:16'的记录,因为它是最近的匹配项。

我正在使用SQL Server 2012,并且可以使用特定于2012年的查询。


可能是重复的问题:https://dev59.com/_lPTa4cB1Zd3GeqPhkT8?rq=1 - Esoteric Screen Name
1个回答

8

类似这样:

select top 1 *
from CdCl
order by abs(datediff(ms, ReadTime, <yourdatetime>))

应该能够根据您的需求进行适应。

一定要喜欢简单优雅的答案。 - Eric J. Price

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接