본문 바로가기
DB & SQL

[MySQL] SYSDATE()와 NOW() 의 차이

by 무사뎀벨레 2021. 10. 14.

 

 

 

 

SQL을 작성하다 보면 현재시간 정보가 필요할 때가 있습니다.
MySQL에서는 sysdate()와 now() 함수로 현재시간을 표시할 수 있는데,
이 두 가지를 비교해보겠습니다.

 

 

 

 

공통적으로 두 함수 모두 현재 시간을 가져온다 라는 기능을 합니다.

하지만 각각의 함수에 따라 '현재'라는 기준이 다릅니다.

 

 

 

 

 

 

now()와 sysdate()의 비교


now()
- 쿼리가 실행되는 그 순간을 기점으로 삼습니다.

sysdate()
- 함수가 실행되는 순간을 기점으로 삼습니다.

아래의 예시를 보면 이해가 더욱 쉽습니다. 

SELECT NOW(), SLEEP(2), NOW();

- 첫번째NOW()의 값은 [2021-10-14 04:35:01]이고 두 번째 NOW()의 값 또한 [2021-10-14 04:35:01]으로 동일합니다.


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

- 첫 번째 SYSDATE()의 값은 [2021-10-14 05:00:12]이고 두 번째 SYSDATE()의 값은 [2021-10-14 05:00:14]입니다.

 

 

위 예시에서 확인이 가능하듯이 NOW()와 SYSDATE()의 결과는 차이가 있다는 것을 알 수 있습니다.

정리를 하자면 아래와 같이 정리할 수 있습니다.

  • NOW() : 쿼리 수행 시간
  • SYSDATE() : 함수 호출 시간

 

데이터를 로드하는데 1시간이 걸리는 테이블이 있다고 가정해봅니다.

이때 각 데이터들을 읽을 때마다 각각 now()와 sysdate()를 사용한다면 차이가 분명할 것입니다.

쿼리를 시작한 시간이 '오후 2시 00분'이라면, now()를 사용한 쿼리는 마지막 값까지 '오후 2시 00분'이란 값을 반환하겠지만, sysdate()의 경우 첫 값은 '오후 2시 00분', 마지막 값은 로드하는데 1시간이 더해져 '오후 3시'가 조회될 것입니다.

반응형

'DB & SQL' 카테고리의 다른 글

자동값 증가(Oracle, MSSQL, MySQL)  (4) 2021.11.16
문자열 병합 CONCAT 함수 사용하기  (0) 2021.10.14
[MySQL] CAST와 CONVERT  (0) 2021.10.14
SQL 이란?  (0) 2021.10.13
DataBase 란?  (6) 2021.10.13

댓글