Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 날짜 열과 시간 열을 하나의 타임스탬프로 결합하는 방법

MySQL에서 날짜(DATE) 열과 시간(TIME) 열을 하나의 타임스탬프로 합쳐야 하는 경우가 종종 있습니다. 이럴 때 concat() 함수로 두 값을 이어 붙인 뒤, cast() 함수를 사용해 DATETIME 형식으로 변환하면 간단하게 해결할 수 있습니다.

기본 문법

SELECT CAST(CONCAT(날짜열이름, ' ', 시간열이름) AS DATETIME) AS 별칭 FROM 테이블이름;

날짜와 시간 값이 문자열 형태로 저장되어 있을 때도 cast() 함수를 활용하면 됩니다. 단, cast()는 DATETIME 타입으로 변환할 때만 사용할 수 있다는 점에 유의하세요.

예제 테이블 생성

먼저 날짜 열과 시간 열을 가진 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE DateAndTimeToTimestamp
   -> (
   -> Duedate date,
   -> DueTime time
   -> );
Query OK, 0 rows affected (0.51 sec)

샘플 데이터 삽입

INSERT 명령으로 몇 개의 레코드를 추가합니다. date_add()curdate()를 조합해 오늘 날짜 기준으로 며칠 전후의 날짜를 넣어 보겠습니다.

mysql> INSERT INTO DateAndTimeToTimestamp VALUES(date_add(curdate(), INTERVAL 2 DAY), '10:30:02');
Query OK, 1 row affected (0.34 sec)

mysql> INSERT INTO DateAndTimeToTimestamp VALUES(date_add(curdate(), INTERVAL -2 DAY), '12:20:45');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO DateAndTimeToTimestamp VALUES(date_add(curdate(), INTERVAL 1 DAY), '01:32:42');
Query OK, 1 row affected (0.21 sec)

mysql> INSERT INTO DateAndTimeToTimestamp VALUES(date_add(curdate(), INTERVAL -1 DAY), '14:25:58');
Query OK, 1 row affected (0.30 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM DateAndTimeToTimestamp;

실행 결과는 다음과 같습니다.

+------------+----------+
| Duedate    | DueTime  |
+------------+----------+
| 2018-12-16 | 10:30:02 |
| 2018-12-12 | 12:20:45 |
| 2018-12-15 | 01:32:42 |
| 2018-12-13 | 14:25:58 |
+------------+----------+
4 rows in set (0.00 sec)

날짜와 시간을 결합한 결과

이제 concat() 함수를 사용해 날짜 열과 시간 열을 공백 한 칸을 두고 연결해 보겠습니다.

mysql> SELECT CONCAT(Duedate, ' ', DueTime) AS timestampDemo FROM DateAndTimeToTimestamp;

결과를 확인하면 날짜와 시간이 하나의 문자열로 합쳐진 것을 볼 수 있습니다.

+---------------------+
| timestampDemo       |
+---------------------+
| 2018-12-16 10:30:02 |
| 2018-12-12 12:20:45 |
| 2018-12-15 01:32:42 |
| 2018-12-13 14:25:58 |
+---------------------+
4 rows in set (0.00 sec)

위 결과를 진짜 DATETIME 또는 TIMESTAMP 타입으로 변환하고 싶다면 앞서 소개한 CAST(... AS DATETIME) 구문을 적용하면 됩니다. 이렇게 하면 문자열이 아닌 실제 날짜·시간 타입으로 반환되므로, 날짜 비교나 정렬, 범위 검색 등 다양한 연산에 바로 활용할 수 있습니다.