MySQL 에서 현재시각을 구할때 주로 사용하는 함수로 now() sysdate() 가 있습니다.
자주 사용하는 문법인데 의외로 차이점을 모르고 사용하는 경우가 많습니다.
NOW() SYSDATE() 차이점은 뭘까 ?
•
NOW() : MySQL 서버의 시간을 가져오는 함수 - 쿼리문이 실행되는 시점의 시간 반환
SELECT NOW();
SQL
복사
•
SYSDATE() : 호출되는 시점의 시간을 반환
SELECT SYSDATE();
SQL
복사
•
CURRENT_TIMESTAMP : MySQL의 NOW()와 동일 - 표준SQL
SELECT CURRENT_TIMESTAMP;
SQL
복사
실제 테스트해보기
SELECT NOW()
, SYSDATE()
, SLEEP(2) -- 의도적으로 2초 딜레이 주기
, NOW()
, SYSDATE();
SQL
복사
결과 :
•
테스트결과로 NOW()는 트랜잭션 호출단위, SYSDATE()는 함수호출 단위로 현재시각을 구하는걸 알 수 있다.
•
NOW()는 쿼리문 실행 최초 시간이 출력되며, SYSDATE()는 호출시점의 시간을 출력하는걸 볼 수 있다.
사용시 주의할 점
•
꼭 필요한 상황이 아닌경우 SYSDATE() 보다는 NOW() 의 사용을 권장한다.
◦
인덱스를 타지못하고 풀스캔을 할 가능성이 크다.
◦
이 차이는 데이터가 많아지고 복잡해질 수록 큰 문제를 일으킨다.