두 함수 다 현재 시간을 입력하거나, 조회하고 싶을 때 사용한다.
하지만 미묘한 차이가 있다.
먼저 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분'이 조회될 것이다.