我有一个包含大量日期的数据库。我想,在给定日期的情况下,获取数据库中的下一个日期和数据库中的上一个日期。
所以给了一个10/10/09,10 / 12/09和10/15/09的数据库,如果有人输入日期为10/13/09,它应该返回10/12/09作为上一个日期和10/15/09作为下一个日期。
我该怎么做?谢谢!
答案 0 :(得分:7)
您可以使用两个查询轻松完成此操作:
-- get previous date
SELECT MAX(DateField) WHERE DateField < '2009-10-13';
-- get next date
SELECT MIN(DateField) WHERE DateField > '2009-10-13';
如果您在DateField上有索引,那么此查询也将非常有效。
答案 1 :(得分:4)
您也可以使用此功能轻松返回整个记录,而不仅仅是日期。
-- Get previous date row
SELECT TOP 1 OrderDate, ... FROM Table WHERE OrderDate < @MyDate ORDER BY OrderDate DESC
-- Get Next date row
SELECT TOP 1 OrderDate, ... FROM Table WHERE OrderDate > @MyDate ORDER BY OrderDate
请注意,之前的订单按日期降序排列,其中下一个订单按升序排列。