to_char, to_date 함수에 대해서 0 2 2,085

by 날막아봐 [Oracle 기초] to_CHAR [2020.08.21 15:22:26]


안녕하세요. SQL 초보자입니다.

 

SQLD 시험을 위해 공부하고 있는데 

기출 문제 중 모르는 것이 있어 질문 드립니다.

 

보기 3번

SELECT SVC_ID, COUNT(*) AS CNT

FROM SVC_JOIN

WHERE '201501' =TO_CHAR(SVC_END_DATE, 'YYYYMM')

AND JOIN_YMD = '20141201'

AND JOIN_HH = '00'

GROUP BY SVC_ID;

 

보기 4번

SELECT SVC_ID, COUNT(*) AS CNT

FROM SVC_JOIN

WHERE TO_DATE('201501', 'YYYYMM') =SVC_END_DATE

AND JOIN_YMDㅣㅣJOIN_HH = '2014120100'

GROUP BY SVC_ID

 

다른 결과를 도출하는 SQL 문장을 찾는 건데 답은 가입이 2014년 12월 01일 00시에 발생했고 서비스 종료일시가 2015년 01월 01일 00시 00분 00초와 2015년 01월 01일 23시 59분 59초 사이에 만료되는 데이터를 찾는 조건입니다. 

 

근데 3번은 맞고 4번은 틀리다고 합니다.

 

WHERE 절에 있는 SVC_END_DATE 서비스 종료 일시입니다.

WHERE 절에서 차이가 나는데 어떤 이유인지 알려주셨으면 합니다. 

 

감사합니다. 

 

저 완전 초보자라서 가능하면 최대한 초보자 수준으로 설명해주시면 감사하겠습니다!!!

 

 

by 마농 [2020.08.21 16:30:37]

TO_DATE('201501', 'YYYYMM') 는
 - 2015년01월 전체를 뜻하는게 아닙니다. (생략된 일시분초 값은 기본값으로 채웁니다.)
 - 2015년01월01일 00시00분00초 를 뜻합니다.


by 날막아봐 [2020.08.23 17:27:54]

date 함수는 기본적으로 시분초도 설정되는군요!!

답변 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입