我的架构看起来像这样:
CREATE TABLE [dbo].[CdCl](
[Id] [int] NOT NULL,
[SubId] [varchar](15) NULL,
[ReadTime] [datetime] NOT NULL,
[ActualPower] [real] NOT NULL
)
数据如下:
我正在处理执行以下操作的查询,但不太清楚最佳方法:
如果Where子句包含ReadTime为'5/1/2013 10:34:09',它将返回突出显示的记录,因为它完全匹配。
如果Where子句包含ReadTime'5 / 1/2013 10:34:11',它将返回突出显示的记录,因为这是最接近的匹配。
如果Where子句包含ReadTime为'5/1/2013 10:34:14',它将返回包含'5/1/2013 10:34:16'的记录,因为它是最近的匹配。
我正在使用SQL Server 2012,并且可以使用2012特定查询。
答案 0 :(得分:8)
这样的事情:
select top 1 *
from CdCl
order by abs(datediff(ms, ReadTime, <yourdatetime>))
应该能够根据您的需要进行调整