2014-12-17 4 views
-1

이 쿼리를 작성하여 두 날짜 사이의 데이터를 찾습니다. 내가 가진 시간 형식 정확히 내가 쿼리날짜 형식 문제, ORACLE

select TO_CHAR(REC_NO),(FIRSTNAME ||' '|| LASTNAME) as NAME, 
      LOC_NAME,TO_CHAR(START_TIME,'yyyy/mm/dd/HH:MI:SS'), 
      TO_CHAR(END_TIME,'yyyy/mm/dd/HH:MI:SS'), 
      TT_NO,CUST_ID,CUST_MOB,MAC_ADDR,EMAIL_ID,s.STATUS 
    from vw_rtb_visit_assn v 
left join [email protected] s on v.TT_NO = s.TICKETNUMBER and TT_NO = '123' 
     and v.ASSN_TIME between to_date('Tue Dec 16 00:00:00 PKT 2014','yyyy/mm/dd') 
     and to_date('Wed Dec 17 00:00:00 PKT 2014','yyyy/mm/dd') 

내 쿼리를 실행하고 나에게 형식의 예외를 제공하지 않습니다에서 사용하고있는 것과 같은 것입니다.

+1

'to_date'호출이 잘못되었으므로 날짜 형식에 대한 설명서를 읽어야합니다. https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00210 – mavroprovato

+0

'to_date (' Wed Dec 17 00:00:00 PKT 2014 ','yyyy/mm/dd ')'어떤 의미가 없습니다. 입력 한 형식 마스크는 리터럴과 원격으로조차 일치하지 않습니다. –

+0

문자열 해석을 할 필요가 없습니다. 날짜를 'DATE'2014-12-16 '과 같이 날짜 리터럴로 지정하면됩니다. 날짜 리터럴은 실제 날짜 값이며 특정 형식을 사용하여 구문 분석해야하는 문자열이 아닙니다. –

답변

3

날짜를 시도 할 조건이

to_date('Tue Dec 16 00:00:00 PKT 2014','yyyy/mm/dd') 

to_date('Tue Dec 16 00:00:00 PKT 2014','DY MON DD HH24:MI:SS TZD YYYY') 
+0

구현하기 전에 mavroprovato 주석을 확인해야합니다. – Exhausted

1

to_date ('DATE_IN_CHAR', 'FORMAT')의 DATE_IN_CHAR 및 FORMAT 형식이 일치해야합니다.

친절하게 아래

and v.ASSN_TIME between to_date('2014/12/16','yyyy/mm/dd') 
    and to_date('2014/12/17','yyyy/mm/dd') 
1

날짜가 할 수 있어야 위치를 전달 특정 문자의 실제 형식이 아닌 형식이 없습니다. 형식은 문자열을 날짜로 구문 분석하거나 날짜에서 문자열을 생성하는 데 사용됩니다.

and v.ASSN_TIME between DATE '2014-12-16' AND DATE '2014-12-17' 

날짜 리터럴은 실제 날짜 값이 아닌 구문 분석 할 문자열은 다음과 같습니다 당신은 예를 들어, in the documentation 설명 된대로 단순히 문자 날짜로 간격을 지정해야합니다,이 중 하나를 할 필요가 없습니다 특정 형식을 사용합니다.

또한 TIMEZONE 함께 타임 스탬프에 대한

TIMESTAMP '1997-01-31 09:26:50.124' 

또는

TIMESTAMP '1997-01-31 09:26:56.66 +02:00' 

와 TIMESTAMP 리터럴을 지정할 수 있습니다.