0

在此处输入图像描述

我有上表,其中我需要让 NoteIndx 匹配今天的日期。只是为了测试,假设今天是 2013 年 6 月 2 日(2013 年 6 月 2 日),这会给我带来两条 noteindx 93105 和 104044 的记录。

但是这里的正确值是 104044,因为我需要选择具有最短日期跨度 STRTDATE 和 ENDDATE 的值。

我正在尝试各种 sql 查询,但到目前为止没有得到正确的结果。

任何人都可以帮助我进行最佳查询以获得上述结果吗?

谢谢。

4

1 回答 1

2

这是你想要的吗?

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).

于 2014-01-16T21:38:34.033 回答