특정 날짜를 기준으로 데이터를 불러오기 위한 쿼리를 만들려고 한다. 어떻게 해야할까? 예를들어 오늘이 5월 1일이다. 만약 오늘보다 한달 전이 4월 1일 부터 만들어진 데이터를 불러오고 싶은 쿼리를 추가하고 싶다면? 이런 경우가 존재할 것이다.

이런 쿼리문을 작성하는 경우가 언제 있을까?? 다양한 경우에 필요하겠지만 아래와 같은 웹콘텐츠를 만든다면 매우 자주 쓰이는 쿼리문이라 할 수 있다.
  1. 일정 기간내의 인기 포스팅을 보여줄 경우
  2. 검색기능을 강화하기 위하여 날짜 지정을 가능하게 만들 경우
  3. 관리자 영역에서 날짜에 따른 콘텐츠 관리가 필요한 경우

여기까지 필요성을 알아봤다면 이제 실제로 쿼리문 작성을 위해 방법을 아래에서 확인해보자. 아래는 예제와 설명이 적혀있다.



! 이전 날짜 또는 이후 날짜를 사용하는 쿼리문 작성 방법


앞에도 언급했지만 오늘, 즉 기준이 되는 날짜가 항상 달라질 수 있을 것이다. 기준이 오늘이므로 오늘 날짜를 먼저 알아야만 한다. 오늘 날짜는 php 또는 MySQL에서 다음의 방법으로 알수 있으니 참고하자.

# 오늘 날짜 구하는 법
$today = date("Y-m-d H:i:s", time());

이 방법은 php 언어에서 오늘 날짜를 구하는 방법이다. 구한 날짜를 today라는 변수에 저장하였다. 아래는 SQL에서 바로 날짜를 구하는 경우이다.

SELECT * FROM date = NOW();


# NOW() 를 사용하여 오늘 날짜 구하기
위 방법은 오늘 날짜를 보여주기 위하여 NOW() 함수를 SQL문에 사용한 방법이다. 그렇다면 오늘 날짜를 사용하여 더 자세하게 알아보도록 하겠다. 아래 예제들은 SQL에 오늘 날짜를 구하는 방법을 사용하였다.


# 한달 이전부터 오늘까지의 데이터 불러오는 예제보기
예제는 한달을 기준으로 그 이후에 만들어진 경우의 데이터만 불러오려고 한다. 이 경우 쿼리는 아래와 같이 작성될 수 있다.
SELECT * FROM tableName WHERE date > (NOW() - INTERVAL 1 MONTH);



# 일주일 이전부터 오늘까지의 데이터만 불러오는 예제보기
이 경우 아래와 같이 쿼리문을 만들 수 있다. 키워드가 MONTH에서 DAY로 변경하면 된다.

SELECT * FROM tableName WHERE date > (NOW() - INTERVAL 7 DAY);


# 3년 이후의 데이터만 쿼리로 불러올 경우의 예제보기
월, 일과 비슷하게 년의 경우를 기준이라면 키워드를 YEAR로 변경 후 사용하도록 한다. 이 경우는 아래와 같이 작성이 가능하다.

SELECT * FROM tableName WHERE date > (NOW() - INTERVAL 3 YEAR);

추가적으로 만약 시간, 분, 초 단위로 원하는 데이터만 불러올 경우 ... 어떻게 해야할까? INTERVAL 뒤에 추가하였던 YEAR를 다른 것으로 바꾸어 주면된다. 예를들어...
  • MONTH
  • DAY
  • MINUTE
  • SECOND

위와 같이 변경해주면 원하는 시간을 기준으로 데이터를 불러오는 것이 가능하다.