복붙노트

[SQL] 시간없이 날짜 만 아는하여 테이블에서 선택 (ORACLE)

SQL

시간없이 날짜 만 아는하여 테이블에서 선택 (ORACLE)

나는 날짜와 시간을 포함 열에 날짜를 알고에 의해 테이블에서 레코드를 검색하기 위해 노력하고있어.

내가 각각 두 개의 열 이름과 날짜를 포함 테이블이라고 T1 있다고 가정 해 봅시다.

데이터는이 2010년 8월 3일 오후 12시 34분 20초 같은 열 날짜에 저장됩니다.

나는 예를 들어,이 쿼리 (내가 시간을 넣어하지 마십시오)가이 기록을 검색 할 :

Select * From t1 Where date="8/3/2010"

이 쿼리는 나에게 아무것도주지!

어떻게 시간없이 단지 날짜를 알고 날짜를 검색 할 수 있습니다?

해결법

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

    1.DATE 그래서 대신 열 이름 your_date을 사용하고, 오라클에서 예약 된 키워드입니다.

    DATE 그래서 대신 열 이름 your_date을 사용하고, 오라클에서 예약 된 키워드입니다.

    당신이 your_date에 인덱스가있는 경우, 내가 사용하는 것이

    WHERE your_date >= TO_DATE('2010-08-03', 'YYYY-MM-DD')
      AND your_date <  TO_DATE('2010-08-04', 'YYYY-MM-DD')
    

    또는 BETWEEN :

    WHERE your_date BETWEEN TO_DATE('2010-08-03', 'YYYY-MM-DD')
                        AND TO_DATE('2010-08-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
    

    너무 많은 레코드가있는 경우에는 인덱스 또는 존재하지 않는 경우

    WHERE TRUNC(your_date) = TO_DATE('2010-08-03', 'YYYY-MM-DD')
    

    충분합니다. 매개 변수가없는 TRUNC는 날짜 시간, 분, 초를 제거합니다.

    성능이 정말로 중요한 경우 해당 컬럼에 함수 기반 인덱스를 넣어 고려 :

    CREATE INDEX trunc_date_idx ON t1(TRUNC(your_date));
    
  2. ==============================

    2.올바른 형식으로 날짜 열을 변환하여 비교 :

    올바른 형식으로 날짜 열을 변환하여 비교 :

    SELECT * From my_table WHERE to_char(my_table.my_date_col,'MM/dd/yyyy') = '8/3/2010'
    

    이 부분

    to_char(my_table.my_date_col,'MM/dd/yyyy')
    

    '2010년 8월 3일'캐릭터가 발생합니다

  3. ==============================

    3.개인적으로, 나는 보통과 함께 할 것입니다 :

    개인적으로, 나는 보통과 함께 할 것입니다 :

    select * 
    from   t1
    where  date between trunc( :somedate )          -- 00:00:00
                and     trunc( :somedate ) + .99999 -- 23:59:59
    
  4. ==============================

    4.당신은 모든 레코드를 얻기 위해 기능 사이를 사용할 수 00 2010-08-03 사이 : (23) 000 2010-08-03 : 00 : 00 : 00 59 : 59 : 000

    당신은 모든 레코드를 얻기 위해 기능 사이를 사용할 수 00 2010-08-03 사이 : (23) 000 2010-08-03 : 00 : 00 : 00 59 : 59 : 000

  5. ==============================

    5.TRUNC는 (my_date은 'DD')는 당신에게 오라클 단지 날짜가 아니라 시간을 제공 할 것입니다.

    TRUNC는 (my_date은 'DD')는 당신에게 오라클 단지 날짜가 아니라 시간을 제공 할 것입니다.

  6. ==============================

    6.간단하게이 하나를 사용합니다 :

    간단하게이 하나를 사용합니다 :

    select * from t1 where to_date(date_column)='8/3/2010'
    
  7. ==============================

    7.

    Select * from t1 where date(col_name)="8/3/2010" 
    
  8. from https://stackoverflow.com/questions/2399753/select-from-table-by-knowing-only-date-without-time-oracle by cc-by-sa and MIT license