[SQL퀴즈] substr과 TO_CHAR차이

문제

employees 테이블로부터 각 월의 16일 이전에 채용된 사원을 모두 출력하는 쿼리구문을 작성하시오.
사용가능한 컬럼명 : hire_date, last_name




내코드

1
2
3
select last_name, hire_date
from employees
where substr(hire_date, -2, 2) < 16;




강사님쿼리

1
2
3
SELECT last_name, hire_date 
FROM employees
WHERE TO_CHAR(hire_date, 'DD') < 16;




배운지식

날짜형식은 나라에 따라 달라진다. 우리나라는 년-월-일순이지만 미국은 보통 월-일-년순, 뉴질랜드는 보통 일-월-년이기도 하다. 이처럼 다양한 나라가 서로 다른 날짜형식을 사용한다.
내 코드처럼 substr를 사용하면 날짜형식이 변하는 순간 다시 index값을 찾아서 작성해야한다.

하지만 TO_CHAR를 사용하면 DD를 찾기때문에 날짜형식이 달라도 날짜만을 찾아서 쿼리를 진행할 수 있어 수월하다.

Comments