Cache SQL을 사용하다가 어제 날짜를 가져오는 쿼리는 어떻게 하면 좋을까?
결론적으로 말하면, 다음과 같이 current_date와 같은 예약어와 to_char()와 같은 Date관련 함수를 이용한 쿼리 문장으로 어제 날짜를 일정 형식(여기서는 'YYYYMMDD' 형식)으로 가져올 수 있다. 가령, dual이라는 테이블에 한 row가 있다고 할 때 다음과 같이 쓴다:
select to_char(current_date-1,'yyyymmdd') as yesterday from dual
>결과
여기서, current_date는 오늘의 날짜를 내부날짜 형식으로 값을 가지고 온다. 여기서 -1을 하면 하루 전 날이 된다. -2를 하면 이틀 전이 되고 +1을 하면 내일이 되고 이런 식으로 응용할 수 있다. ODBC 표준이다.
to_char 함수도 역시 ODBC 표준함수로서 첫번째 인자로 날짜 형식의 값을 두번째 인자로 이 날짜값을 표현할 형식을 주면 된다.
참고로, dateadd라는 SQL 함수가 있다. 이 함수는 날짜 형식이 'yyyy-mm-dd hh:mi:dd' 형식으로 고정되어 있어 이 형식을 사용할 경우에는 좀더 편리하다. 다음은 어제를 출력하는 dateadd 함수 사용예와 결과이다.
select dateadd('d',-1,current_date) as yesterday from dual
>결과
# |
yesterday |
1 |
2009-06-18 00:00:00 |
|