4

我有一个看起来像这样的模式:

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

数据如下:

在此处输入图像描述

我正在处理一个执行以下操作的查询,但不太清楚最好的方法:

  1. 如果 Where 子句包含“5/1/2013 10:34:09”的 ReadTime,它将返回突出显示的记录,因为它是完全匹配的。

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

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

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

4

1 回答 1

8

像这样的东西:

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

应该能够适应您的需求

于 2013-05-01T14:48:04.833 回答