SQL Server 获取最接近(将来)今天的行



我有一个表,其中包含带有开始日期(日期时间)的项目历史记录 - 它应该只允许一个项目针对一个日期。 有一个验证过程,它将采用一个日期并返回一个代码(成功/失败原因代码)以及最接近今天的"下一个"历史项目。

如果这是表数据(标识日期标题):

1 16/05/2010 'item 1'
2 17/05/2010 'item 2'
3 20/05/2010 'item 3'

我想验证一个条目:

exec Validate '18/05/2010' 'item 4'

会返回我:"item 4",因为该条目有效,尽管数据尚未提交,但它将我的新条目返回为下一个可用项目,因为它(将来)最接近今天。

exec Validate '24/05/2010' 'item 5'

应该返回我:"项目 3"。 该日期也是有效的,但有一个记录早于新日期,但晚于今天。

也许你可以根据下一个查询进行检查:

select min(startdate)
from itemstable
where datediff(d, getdate(), startdate)>0
    and datediff(d, startdate, @datetocheck)>=0

第一个子句检查将来的开始日期,第二个子句检查在您提供的开始日期之前或相同开始日期。

(有些比较可能是错误的 - 总是发生日期问题:))

相关内容

  • 没有找到相关文章

最新更新