【发布时间】:2011-01-10 17:38:42
【问题描述】:
从下面的数据中,我需要使用 SQL Server 2005 为每个 Linked ID 选择最接近指定日期的记录:
ID Date Linked ID ........................... 1 2010-09-02 25 2 2010-09-01 25 3 2010-09-08 39 4 2010-09-09 39 5 2010-09-10 39 6 2010-09-10 34 7 2010-09-29 34 8 2010-10-01 37 9 2010-10-02 36 10 2010-10-03 36
因此使用 01/10/2010 选择它们应该会返回:
1 2010-09-02 25 5 2010-09-10 39 7 2010-09-29 34 8 2010-10-01 37 9 2010-10-02 36
我知道这一定是可能的,但我似乎无法理解它(一定是太接近一天的结束了:P)如果有人可以帮助我或者在正确的方向上轻轻推动我,它会不胜感激!
编辑:我也遇到过这个 sql 来获取最近的日期:
abs(DATEDIFF(minute, Date_Column, '2010/10/01'))
但不知道如何正确地合并到查询中...
谢谢
【问题讨论】:
-
添加...您在我的评论后添加到编辑中。好的,我会给你写完整的查询。
-
你的标题有误导性,可能是“select ID order by nearest date”
-
您的示例使用 minute 作为 datediff 的第一个参数可能不起作用(因为您的示例日期中没有时间。)您想使用 day - 这可以是缩写。如
day、dd或d。有趣的是,所有答案都使用不同的缩写。 -
@dvhh 不,我不这么认为,我正在描述我正在尝试做的事情,如果你看看霍根斯的回答,那正是他所做的
标签: sql sql-server sql-server-2005 tsql