2017-09-12 3 views
0

6 월의 Oracle 테이블 (6 월 1 일부터 2017 년 6 월 30 일까지)에서 데이터를 거의 선택하지 않고 시작 날짜를 내일부터 (9 월 13 일). 따라서 아래 형식으로 쿼리를 작성했습니다.trunc (Sysdate-104)와 trunc (Sysdate-75) 사이의 오라클 trunc (DateTime)

select * from table where column1='Data1' and Column2='Data2' 
and trunc(DateTime) between trunc(sysdate-104) and trunc(sysdate-75) 

이 도구는 없기 때문에이 쿼리를 확인할 수 없습니다. 방금 메모장에 쓴 후 친구에게 공유하고 싶습니다.

내 질문 - trunc(DateTime) between trunc(sysdate-104) and trunc(sysdate-75) 상태는 6 월 1 일부터 6 월 31 일 사이에 데이터를 제공합니까, 아니면 구문 이슈가 있습니까?

답변

0

공식이 시간에 민감한 경우에도 구문 자체에는 아무런 문제가 없습니다. 즉, 내일은 동일한 결과를 반환하지 않습니다.

대신,이 같은 갈 :

AND TRUNC(DateTime) BETWEEN to_date('2016-06-01','YYYY-MM-DD') 
         AND to_date('2016-06-30','YYYY-MM-DD') 
+0

답장을 보내 주셔서 감사합니다. 테이블 날짜 열에 'Jun-01-2017'또는 다른 형식이 있으면 '2017-06-01'과 '2016-06-30'이 ​​문제를 생성합니까? –

+1

열에 DATE 형식이 있으면 중요하지 않습니다. 나는 명시적인 날짜 형식으로 대답을 내줄 것이다. – Dessma

+0

@dessma, 어때요? 2016-06-30 23:59:59 ?! –

0

날짜 형식을 월/연도로 변환하여 비교하십시오.

select * 
from table 
where column1 = 'Data1' 
and column2 = 'Data2' 
and to_char(DateTime, 'MMYYYY') = '062017'; 
+0

감사합니다. 위 쿼리를 실행하면 6 월 전체 데이터를 볼 수 있습니까? –

-1

안녕하세요 가장 정확한 될 것이라고 생각 : 답장을

select * from table where column1='Data1' and Column2='Data2' 
    AND DateTime BETWEEN TRUNC(sysdate-104) 
       AND TRUNC(sysdate-75) 
       + interval '23' hour 
       + interval '59' minute 
       + interval '59' second; 
관련 문제