如何找到最近的日期?

时间:2013-05-01 14:43:46

标签: sql sql-server tsql

我的架构看起来像这样:

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子句包含ReadTime为'5/1/2013 10:34:09',它将返回突出显示的记录,因为它完全匹配。

  2. 如果Where子句包含ReadTime'5 / 1/2013 10:34:11',它将返回突出显示的记录,因为这是最接近的匹配。

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

  4. 我正在使用SQL Server 2012,并且可以使用2012特定查询。

1 个答案:

答案 0 :(得分:8)

这样的事情:

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

应该能够根据您的需要进行调整