MySQL에서 두 타임스탬프 사이의 차이를 일(day) 단위로 계산하려면 내장 함수인 DATEDIFF()를 사용하면 됩니다. 이 함수는 첫 번째 날짜에서 두 번째 날짜를 뺀 결과를 일수로 반환합니다.
DATEDIFF() 기본 문법
select datediff(yourColumnName1,yourColumnName2) as anyVariableName from yourTableName;
첫 번째 인자에서 두 번째 인자를 빼는 방식으로 동작하기 때문에, 인자의 순서에 따라 결과값의 부호가 달라질 수 있다는 점을 유의해야 합니다.
예제 테이블 생성하기
실제 동작을 확인하기 위해 타임스탬프 컬럼 두 개를 가진 테이블을 먼저 생성해 보겠습니다.
mysql> create table DifferenceTimestamp -> ( -> IssueTime timestamp, -> DueTime timestamp -> ); Query OK, 0 rows affected (0.66 sec)
샘플 데이터 삽입하기
INSERT 명령어를 사용하여 현재 시점과 과거 날짜의 조합으로 테스트 데이터를 입력합니다. DATE_ADD() 함수에 음수 INTERVAL을 지정하면 과거 날짜를 손쉽게 만들 수 있습니다.
mysql> insert into DifferenceTimestamp values(now(),date_add(now(),interval -30 Day)); Query OK, 1 row affected (0.12 sec) mysql> insert into DifferenceTimestamp values(now(),date_add(now(),interval -24 Day)); Query OK, 1 row affected (0.16 sec) mysql> insert into DifferenceTimestamp values(now(),date_add(now(),interval -5 Day)); Query OK, 1 row affected (0.14 sec)
저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> select *from DifferenceTimestamp;
실행 결과는 다음과 같습니다.
+---------------------+---------------------+ | IssueTime | DueTime | +---------------------+---------------------+ | 2018-12-07 17:48:28 | 2018-11-07 17:48:28 | | 2018-12-07 17:48:40 | 2018-11-13 17:48:40 | | 2018-12-07 17:48:46 | 2018-12-02 17:48:46 | +---------------------+---------------------+ 3 rows in set (0.00 sec)
DATEDIFF()로 일수 차이 계산하기
이제 두 타임스탬프 간의 차이를 일 단위로 구하는 쿼리를 실행해 보겠습니다.
mysql> SELECT DATEDIFF(IssueTime, DueTime) AS DifferenceInTimestampDays from DifferenceTimestamp;
결과는 다음과 같습니다.
+---------------------------+ | DifferenceInTimestampDays | +---------------------------+ | 30 | | 24 | | 5 | +---------------------------+ 3 rows in set (0.00 sec)
추가 팁: TIMESTAMPDIFF()와의 비교
일 단위뿐 아니라 시간, 분, 초 등 더 세밀한 단위의 차이가 필요하다면 TIMESTAMPDIFF() 함수를 사용하는 것이 좋습니다. 예를 들어 TIMESTAMPDIFF(HOUR, DueTime, IssueTime)처럼 단위를 직접 지정할 수 있어 다양한 상황에서 유용하게 활용됩니다.