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 |
댓글