MySQL NOW()와 CURDATE() 함수란?
MySQL에서 현재 날짜나 시간을 조회할 때 자주 사용되는 함수가 바로 CURDATE()와 NOW()입니다. 두 함수는 이름은 비슷하지만 반환하는 값에 중요한 차이가 있습니다.
CURDATE() 함수 – 현재 날짜만 반환
CURDATE() 함수는 이름 그대로 현재 날짜만을 반환합니다. 즉, 시간 정보는 포함되지 않고 'YYYY-MM-DD' 형식의 날짜 값만 출력됩니다.
mysql> select CURDATE(); +------------+ | CURDATE() | +------------+ | 2017-10-28 | +------------+ 1 row in set (0.00 sec)
위 예제에서 볼 수 있듯이 CURDATE()는 오직 날짜(2017-10-28)만 결과로 돌려줍니다.
NOW() 함수 – 현재 날짜와 시간 모두 반환
반면 NOW() 함수는 현재 날짜와 시간을 함께 반환합니다. 'YYYY-MM-DD HH:MM:SS' 형식으로 출력되기 때문에, 정확한 시각까지 기록해야 하는 경우에 유용합니다.
mysql> Select NOW(); +---------------------+ | NOW() | +---------------------+ | 2017-10-28 09:10:16 | +---------------------+ 1 row in set (0.00 sec)
위 예제에서 NOW()는 날짜뿐 아니라 시간(09:10:16)까지 함께 표시하는 것을 확인할 수 있습니다.
두 함수의 차이점 요약
- CURDATE(): 현재 날짜만 반환 (예: 2017-10-28)
- NOW(): 현재 날짜와 시간을 모두 반환 (예: 2017-10-28 09:10:16)
따라서 게시글 작성일처럼 날짜 정보만 필요하다면 CURDATE()를, 로그 기록처럼 정확한 시각까지 저장해야 한다면 NOW()를 사용하는 것이 적합합니다. 참고로 CURDATE()는 CURRENT_DATE(), NOW()는 CURRENT_TIMESTAMP()와 동일하게 동작합니다.