복붙노트

[SQL] 확인 현재 날짜가 두 날짜 오라클 SQL 사이 인 경우

SQL

확인 현재 날짜가 두 날짜 오라클 SQL 사이 인 경우

나는 현재 날짜 오라클 SQL을 통해 두 날짜 사이에 떨어질 경우 1을 선택하고 싶습니다.

나는 다른 질문을 통해 읽은 후 SQL을 썼다.

https://stackoverflow.com/questions/2369222/oracle-date-between-query

https://stackoverflow.com/questions/2399753/select-from-table-by-knowing-only-date-without-time-oracle

그러나 그것은 단지 널 (null)을 반환했습니다. SYSDATE는 날짜 형식 DD / MM / YYYY에서 2014년 1월 5일입니다 현재 날짜입니다.

는 SQL I는 썼다 :

select 1 from dual 
WHERE to_date(sysdate,'DD/MM/YYYY') 
BETWEEN TO_DATE('28/02/2014', 'DD/MM/YYYY')
AND TO_DATE('20/06/2014', 'DD/MM/YYYY');

select 1 from dual 
WHERE to_date(sysdate,'DD/MM/YYYY') >= TO_DATE('28/02/2014', 'DD/MM/YYYY') 
AND to_date(sysdate,'DD/MM/YYYY') < TO_DATE('20/06/2014', 'DD/MM/YYYY'); 

해결법

  1. ==============================

    1.당신은 SYSDATE에 () TO_DATE를 적용 할 필요가 없습니다. 그것은 이미 거기에있다 :

    당신은 SYSDATE에 () TO_DATE를 적용 할 필요가 없습니다. 그것은 이미 거기에있다 :

    select 1
    from dual 
    WHERE sysdate BETWEEN TO_DATE('28/02/2014', 'DD/MM/YYYY') AND TO_DATE('20/06/2014', 'DD/MM/YYYY');
    

    당신이 날짜의 시간 구성 요소에 대해 우려하는 경우, 다음) (TRUNC 사용

    select 1
    from dual 
    WHERE trunc(sysdate) BETWEEN TO_DATE('28/02/2014', 'DD/MM/YYYY') AND
                                 TO_DATE('20/06/2014', 'DD/MM/YYYY');
    
  2. ==============================

    2.

    SELECT to_char(emp_login_date,'DD-MON-YYYY HH24:MI:SS'),A.* 
    FROM emp_log A
    WHERE emp_login_date BETWEEN to_date(to_char('21-MAY-2015 11:50:14'),'DD-MON-YYYY HH24:MI:SS')
    AND
    to_date(to_char('22-MAY-2015 17:56:52'),'DD-MON-YYYY HH24:MI:SS') 
    ORDER BY emp_login_date
    
  3. ==============================

    3.

    select
    distinct
    e1.enddate,
    e3.startdate,
    DATEDIFF(DAY,e1.enddate,e3.startdate)-1 as [Datediff]
    from #temp e1 
       join #temp e3 on e1.enddate < e3.startdate          
           /* Finds the next start Time */
    and e3.startdate = (select min(startdate) from #temp e5
    where e5.startdate > e1.enddate)
    and not exists (select *  /* Eliminates e1 rows if it is overlapped */
    from #temp e5 
    where e5.startdate < e1.enddate and e5.enddate > e1.enddate);
    
  4. from https://stackoverflow.com/questions/23398632/check-if-current-date-is-between-two-dates-oracle-sql by cc-by-sa and MIT license