current_timestamp()와 now()
쿼리문을 짜다가, 현재 시간을 나타내야 하는 경우가 생겼다.
나는 now()로 작업을 했는데,
어떤분은 current_timestamp()로 작업하신 것을 발견…..!!!
문득 둘의 차이가 궁금해져서 검색을 때려보았다.
MYSQL에서 시간출력 방법으로는 SYSDATE, NOW, CURRENT_TIMESTAMP 가 있다.
current_timestamp와 now는 동일하다고 보면 된다고 한다.
대신 current_timestamp는 표준 sql이라고 보면 된다.
그렇다면 sysdate는…?
current_timestamp와 now는 쿼리문이 실행되는 시점의 시간을 반환한다.
그렇지만 sysdate는 호출되는 시점의 시간을 반환한다.
이렇게 들으면 잘 이해가 가지 않는다.
심지어 그냥 조회할때는 다 똑같은 시간으로 출력된다.
예제를 보자.
SELECT SYSDATE(), NOW(), CURRENT_TIMESTAMP(),
SLEEP(5),
SYSDATE(), NOW(), CURRENT_TIMESTAMP();
이 쿼리문을 돌려보면…!
처음에는 셋 다 똑같은 시간으로 나온다.
SLEEP 함수를 이용해서 임의로 5초를 지연시켰을때는
current_timestamp와 now는 똑같이 쿼리를 시작한 순간의 시작을 반환하지만,
sysdate는 5초 후에 호출한 시점의 시간을 반환한다.