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초 전후로 호출되는 시점의 시간이 각각 반환된다.
'RDBS > MYSQL' 카테고리의 다른 글
[MYSQL]REGEXP(정규 표현식) : 특정 문자열 처리 (7) | 2023.01.13 |
---|---|
[MYSQL]함수를 활용한 날짜 및 시간 연산 (9) | 2023.01.10 |
[프로그래머스]입양 시각 구하기(2)-MySQL (9) | 2023.01.09 |
[MYSQL]INSERT - 여러 건 삽입 (12) | 2023.01.09 |
[프로그래머스]입양 시각 구하기(1)-MySQL (9) | 2023.01.07 |