我有上面的表格,其中需要获取与今天的日期匹配的NoteIndx。仅出于测试目的,假设今天是2013/06/02(2013年6月2日),那将为我带来noteindx 93105和104044的两项记录。
但是这里的正确值是104044,因为我需要选择STRTDATE和ENDDATE的日期跨度最短的值。
我正在尝试各种SQL查询,但到目前为止没有得到正确的结果。
谁能帮我获得最好的查询,以获得上述结果?
谢谢。
这是你想要的吗?
select top 1 n.*
from notes n
where cast('2013-06-02' as date) >= strtdate and
cast('2013-06-02' as date) < enddate + 1
order by enddate - strtdate;
这不会使用,between
因为您的日期存储为datetime
-这总是会导致它们成为日期中时间部分的可能性。
如果您要今天的日期,请使用getdate()
代替cast('2013-06-02' as date)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句