2009-09-02 6 views
0

날짜가 많은 데이터베이스가 있습니다. 데이트를 받으면 데이터베이스의 다음 날짜와 데이터베이스의 이전 날짜를 얻고 싶습니다.날짜가 주어지면 데이터베이스에서 다음 날짜와 이전 날짜를 얻는 방법

10/10/09, 10/12/09 및 10/15/09로 데이터 베 이스가 주어지면 누군가 10/13/09 날짜를 입력하면 이전 날짜와 같이 10/12/09를 반환해야합니다. 날짜와 10/15/09를 다음 날짜로 사용하십시오.

어떻게하면됩니까? 감사!

답변

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 

날짜 별 이전 주문은 내림차순으로 오름차순으로 다음 주문으로 내림차순으로 표시됩니다.

+0

+1 나를 이길. 원하는 경우 해당 날짜와 연관된 다른 필드를 가져올 수 있기 때문에 실제로는 더 좋은 방법입니다. 그렇지 않은 경우에는 성능이 동일합니다. – harpo

+2

질문에 _mysql_라는 태그가 붙어 있습니다.이 태그에는'TOP' 대신'LIMIT'이 필요합니다. –

+0

당신은 오직 한 해 또는 일년과 한 해만 주어진다면 똑같은 일을 할 수 있습니까? – Binarytales

7

은 쉽게 두 개의 쿼리를 사용하여이 작업을 수행 할 수 있습니다 당신이하여 DateField에 대한 인덱스가있는 경우

-- get previous date 
SELECT MAX(DateField) WHERE DateField < '2009-10-13'; 
-- get next date 
SELECT MIN(DateField) WHERE DateField > '2009-10-13'; 

는,이 쿼리도 매우 효율적입니다.

관련 문제