2013-05-01 141 views
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子句包含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'的記錄,因爲這是最接近的匹配。

我正在使用SQL Server 2012,並將與2012年具體查詢罰款。

+0

可能重複:http://stackoverflow.com/questions/4649665/t-sql-select-by-最近的日期和分組的ID?rq = 1 – 2013-05-01 14:50:57

回答

8

事情是這樣的:

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

應該可以說,以適應您的需求

+0

愛得簡單優雅的答案。 – 2013-05-01 15:21:14