programing

오라클에서 날짜 시간 쿼리

iphone6s 2023. 10. 19. 22:06
반응형

오라클에서 날짜 시간 쿼리

저는 표에 날짜 유형 열이 있는데, 거기에 날짜를 시간과 함께 저장합니다.

다음으로 문의합니다.WHERE이런 식으로 했습니다.

select * 
from conference_hall_book 
where to_date(end_time,'dd/mon/yyyy hh24:mi:ss') <= to_date('26/oct/2013 15:00:00','dd/mon/yyyy hh24:mi:ss')

그러나 end_time 열에도 27/10/2013 8:00:00 AM 결과가 있습니다.

누가 제가 그 실수를 찾는 것을 도와줄 수 있습니까?

문제가 발생하는 이유는

to_date(end_time,'dd/mon/yyyy hh24:mi:ss')

To_date 함수를 잘못 사용한 것입니다.To_date는 문자열을 날짜로 변환합니다.Oracle이 이 식을 보면 데이터베이스/세션의 구성된 날짜 형식을 사용하여 end_time 값을 문자열로 자동 변환합니다.이 형식은 일반적으로 시간 부분을 포함하지 않으므로 "27/10/2013 8:00:00 AM" 값을 가진 날짜는 "27/10/2013" 문자열로 변환됩니다(데이터베이스 날짜 형식이 dd/mm/yyyy인 경우).그러면 To_date 식을 사용하면 문자열 값 "27/10/2013"이 다시 날짜로 변환됩니다.결과 날짜 값은 "27/10/2013 00:00:00"이 되므로 원래 날짜의 시간 부분을 잃게 됩니다.

간단하고 정확한 해결책은 to_date(end_time) 식을 버리고 end_time만 사용하는 것입니다.이렇게 하면 end_time에 인덱스가 있는 경우 쿼리에서 해당 인덱스를 사용할 수 있습니다.

select * 
from conference_hall_book 
where end_time <= to_date('26/oct/2013 15:00:00','dd/mon/yyyy hh24:mi:ss')

언급URL : https://stackoverflow.com/questions/19343225/querying-datetime-in-oracle

반응형