2012-01-02 2 views
-3

Oracle 11g을 (를) 처음으로 사용했습니다 & 질문에 대한 질문이 있습니다.Oracle 11g의 날짜 비교

Datecreated_date 열이있는 테이블 dummy가 있습니다.

created_date + 7 일이 오늘 날짜보다 작은 모든 레코드를 반환하는 쿼리를 원합니다.

Oracle 11g의 어떤 유형의 쿼리가이 작업을 수행합니까?

+5

나는이 좋은 대답을 얻는 것이 행운이라고 생각합니다. 당신은 적어도 쿼리를 시도해야한다. - 또는 이것에 대한 약간의 정보는 꽤 기본적인 것들이므로 SQL을 읽어야한다. – Randy

답변

4

오라클은 너무

where table.created_date >= sysdate 
and table.created_date < sysdate + 7 

정확히 지금 정확히 지금 플러스 칠일 간의 행을 찾을 것입니다, 당신은 날짜 산술 +를 사용할 수 있습니다. 당신은 시간 구성 요소를 포함하지 않는 경우

, 당신은

where trunc(table.created_date) >= trunc(sysdate) 
and trunc(table.created_date) < trunc(sysdate) + 7 
+0

감사! 간단히 "creation_date + 7 = sysdate AND created_date Mike

+0

'creation_date + 7 rejj

4

내가 rejj의 솔루션은 현재와 미래에 칠일 사이에 당신에게 기록을 줄 것이다 생각 trunc() 기능을 사용할 수 있습니다. 당신의 설명을 보면, 지난 7 일 이내에 그 기록을 원했던 것 같습니다. 나는 같이이 할 줄 : 이것은 더 명확 할 수

WHERE created_date <= SYSDATE 
    AND created_date >= SYSDATE - 7 

, 그리고 것과 같습니다 TRUNC()를 사용하여 당신이 CREATED_DATE에 가지고있는 인덱스를 우회하는 최적화가 발생할 수 있음을

WHERE created_date BETWEEN SYSDATE AND (SYSDATE - 7) 

가주의 , 기능 색인이 정의되어 있지 않은 한.

0

사용 간격 상수는

SELECT * 
    FROM DUMMY 
    WHERE CREATED_DATE >= TRUNC(SYSDATE) - INTERVAL '7' DAY 

공유 같이 날짜 산술 명확하게하고 즐길 수 있습니다.