[MySQL] MySQL 현재 날짜 및 시간 출력 방법
MySQL에서의 날짜 및 시간 출력 방법을 알아보고 비교해보자.
MySQL 현재 날짜 및 시간 출력 방법
1. SYSDATE() : 현재 날짜 및 시간 출력 (YYYY-MM-DD HH:MM:SS)
2. NOW() : 현재 날짜 및 시간 출력 (YYYY-MM-DD HH:MM:SS)
3. CURRENT_TIMESTAMP() : 현재 날짜 및 시간 출력 (YYYY-MM-DD HH:MM:SS)
4. CURRENT_DATE() : 현재 날짜 출력 (YYYY-MM-DD)
5. CURRENT_TIME() : 현재 시간 출력 (HH:MM:SS)
참고로 CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME은 SQL 표준에서 정의된 “datetime 키워드”라서 함수처럼 보이지만 실제로는 내장 상수(표현식)에 가깝다. 따라서 괄호 없이도 사용이 가능하다. (MySQL 기준)
이때 NOW()와 CURRENT_TIMESTAMP()는 동일한 기능을 한다.
NOW()는 MySQL 전용 함수이고, CURRENT_TIMESTAMP()는 SQL 표준 표현식이다.
SYSDATE()와 NOW()의 차이
sysdate()는 함수 호출 시점의 시간을 반환하고, now()와 current_timestamp()는 쿼리문이 실행되는 시점의 시간을 반환한다.
실무에서는 보통 NOW() / CURRENT_TIMESTAMP()를 사용하고, SYSDATE()는 “진짜 현재 시각이 반드시 필요한 특수 상황”에서만 쓴다.
"쿼리 시작 시점"과 "함수 호출 시점"이란?
쿼리 시작 시점은, 해당 쿼리문 하나가 실행되는 시점의 시간이다. (쿼리문 하나를 선택해서 RUN을 눌렀을 그 시점!).
쿼리가 시작되고, 실행되는 순간에도 시간은 계속 흐른다.
이때 함수 호출 시점은 이렇게 SQL 쿼리가 실행되는 중에 해당 함수가 실제로 호출되는 순간의 시간을 말한다.
실행 결과 비교
따라서 아래와 같은 쿼리를 실행하면 SLEEP(5) 후의 SYSDATE()만 달라진 결과를 볼 수 있다.
SELECT SYSDATE(), NOW(), CURRENT_TIMESTAMP(), CURRENT_DATE(), CURRENT_TIME(), SLEEP(5),
SYSDATE(), NOW(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME; -- CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME는 괄호 없이도 사용 가능

SLEEP(n)은 쿼리를 의도적으로 지연시키기 위해 사용하는 함수로, n초 만큼 쿼리의 실행을 멈추었다가 다시 실행시킨다.
Reference
https://developer-heo.tistory.com/42
https://seungnong.tistory.com/entry/MySQL-sysdate-now-currenttimestamp-currentdate