给定日期,如何在数据库中获取下一个和上一个日期

时间:2009-09-02 01:31:32

标签: sql mysql

我有一个包含大量日期的数据库。我想,在给定日期的情况下,获取数据库中的下一个日期和数据库中的上一个日期。

所以给了一个10/10/09,10 / 12/09和10/15/09的数据库,如果有人输入日期为10/13/09,它应该返回10/12/09作为上一个日期和10/15/09作为下一个日期。

我该怎么做?谢谢!

2 个答案:

答案 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

请注意,之前的订单按日期降序排列,其中下一个订单按升序排列。