[mysql] now() 와 sysdate()의 차이

김주경·2020년 11월 30일
0

now() 와 sysdate() 차이

두 함수 다 현재 시간을 입력하거나, 조회하고 싶을 때 사용한다.
하지만 미묘한 차이가 있다.

먼저 now()의 경우 쿼리가 실행되는 그 순간을 기점으로 삼는다.
반면 sysdate()의 경우 함수가 실행되는 순간을 기점으로 삼는다.



아래의 예시를 보며 알아보자.

예시 1)
SELECT NOW(), SLEEP(2), NOW();

예시 2)
SELECT SYSDATE(), SLEEP(2), SYSDATE();

첫번째 예시의 경우

now() = 2020/11/30 오후 6:28:28 
now()_1 = 2020/11/30 오후 6:28:28

결과를 보면 알겠지만 첫번째 now()와 두번째 now() 값이 오후 6:28:28로 동일하다.

하지만 같은 시간에 sysdate()를 사용하면

sysdate() = 2020/11/30 오후 6:28:28 
sysdate()_1 = 2020/11/30 오후 6:28:30

로 SLEEP(2) 가 반영된 것을 확인할 수 있다.



불러오는데 30분이 걸리는 테이블이 있다고 가정해보자. 이 때 각 데이터들을 읽을 때 마다 각각 now()와 sysdate()를 찍어준다면,

쿼리를 시작한 시간이 '오전 9시 00분'이라면 now()를 사용한 쿼리는 마지막 값까지 '오전 9시 00분'이란 값을 반환하겠지만
sysdate()의 경우 첫 값은 '오전 9시 00분', 마지막 값은 '오전 9시 30분'이 조회될 것이다.

profile
안냐세온

0개의 댓글