RDBS/MYSQL

[MYSQL]NOW(), SYSDATE()의 차이

MoonSta 2023. 1. 9. 16:50

NOW(), SYSDATE()의 차이

MySQL에서 현재 시각의 데이터를 가져올 수 있는 몇 가지의 방법이 있다. 하지만 특정 기준 없이 무분별하게 사용되는 경우가 있어 차이를 알아보고자 한다.

 

NOW()

MySQL 서버의 시간을 가져오는 함수 - 쿼리문이 실행되는 시점의 시간 반환

SELECT NOW();

 
CURRENT_TIMESTAMP

MySQL의 NOW()와 동일 - 표준SQL

SELECT CURRENT_TIMESTAMP;

 

SYSDATE()

호출되는 시점의 시간을 반환 

SELECT SYSDATE();

차이

SELECT NOW()
     , CURRENT_TIMESTAMP
     , SYSDATE();
NOW( ) CURRENT_TIMESTAMP SYSDATE( )
2023-01-09- 16:00:00 2023-01-09- 16:00:00 2023-01-09- 16:00:00

위와 같이 조회하는 경우에 반환되는 시간은 모두 동일하다. 하지만 NOW(), CURRENT_TIMESTAMP 는 쿼리문이 실행되는 시점에서 시간이 반환되는 반면에 SYSDATE()는 호출되는 시점의 시간이 반환된다. 예제를 확인해보도록 하겠습니다.

 

예제

select NOW() 
     , CURRENT_TIMESTAMP()
     , SYSDATE()
     , SLEEP(5)
     , NOW()
     , CURRENT_TIMESTAMP
     , SYSDATE();
NOW( ) CURRENT_TIMESTAMP SYSDATE( ) NOW( ) CURRENT_TIMESTAMP SYSDATE( )
2023-01-09- 16:00:00 2023-01-09- 16:00:00 2023-01-09- 16:00:00 2023-01-09- 16:00:00 2023-01-09- 16:00:00 2023-01-09- 16:00:05

SLEEP 함수를 사용하여 임의로 5초를 지연시켰을 때 반환되는 시간의 차이를 볼 수 있습니다. NOW(), CURRENT_TIMESTAMP 는 쿼리 실행이 된 시점의 시간이 저장된 시간 값이 반환되고, SYSDATE()는 5초 전후로 호출되는 시점의 시간이 각각 반환된다.