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

MySQL에서 DATETIME 변수 선언하고 활용하는 방법

MySQL에서 날짜·시간(DATETIME) 변수 선언하기

MySQL에서 DATETIME 타입의 값을 변수로 다루려면 SET 명령어를 사용해 사용자 정의 변수(user-defined variable)를 선언하면 됩니다. 기본 문법은 다음과 같습니다.

SET @변수명 = '날짜시간값';

사용자 정의 변수는 @ 기호로 시작하며, 세션이 유지되는 동안 값을 계속 사용할 수 있습니다.

예제 테이블 생성

문법을 실제로 확인하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리는 Id, Name, ArrivalDatetime 세 개의 컬럼을 가진 테이블을 생성합니다.

mysql> create table datetimeVariables
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(10),
   -> ArrivalDatetime datetime,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.78 sec)

샘플 데이터 삽입

INSERT 문을 사용해 여러 개의 레코드를 추가합니다.

mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('John','2011-01-31 13:45:20');
Query OK, 1 row affected (0.53 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Sam','2012-04-25 15:30:25');
Query OK, 1 row affected (0.18 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Larry','2013-10-04 16:40:30');
Query OK, 1 row affected (0.10 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Bob','2014-05-15 10:30:25');
Query OK, 1 row affected (0.33 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Mike','2017-08-13 11:30:25');
Query OK, 1 row affected (0.08 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('David','2018-04-25 09:30:25');
Query OK, 1 row affected (0.20 sec)

저장된 데이터 확인

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

mysql> select *from datetimeVariables;

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

+----+-------+---------------------+
| Id | Name  | ArrivalDatetime     |
+----+-------+---------------------+
|  1 | John  | 2011-01-31 13:45:20 |
|  2 | Sam   | 2012-04-25 15:30:25 |
|  3 | Larry | 2013-10-04 16:40:30 |
|  4 | Bob   | 2014-05-15 10:30:25 |
|  5 | Mike  | 2017-08-13 11:30:25 |
|  6 | David | 2018-04-25 09:30:25 |
+----+-------+---------------------+
6 rows in set (0.00 sec)

DATETIME 변수 선언 후 쿼리에서 활용하기

이제 SET 명령어로 DATETIME 값을 담는 변수를 선언합니다.

mysql> set @greaterThan2011Datetime='2012-04-25 15:30:25';
Query OK, 0 rows affected (0.00 sec)

선언한 변수는 SELECT 쿼리의 WHERE 조건에서 그대로 사용할 수 있습니다.

mysql> select *from datetimeVariables
   -> where ArrivalDatetime >= @greaterThan2011Datetime;

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

+----+-------+---------------------+
| Id | Name  | ArrivalDatetime     |
+----+-------+---------------------+
|  2 | Sam   | 2012-04-25 15:30:25 |
|  3 | Larry | 2013-10-04 16:40:30 |
|  4 | Bob   | 2014-05-15 10:30:25 |
|  5 | Mike  | 2017-08-13 11:30:25 |
|  6 | David | 2018-04-25 09:30:25 |
+----+-------+---------------------+
5 rows in set (0.00 sec)

결과를 보면 2011년 1월 31일에 도착한 John의 레코드가 제외되고, 변수에 저장한 '2012-04-25 15:30:25'보다 크거나 같은 값 5건만 필터링되어 출력되었습니다.

정리 및 참고 사항

이처럼 MySQL의 사용자 정의 변수는 복잡한 쿼리에서 특정 날짜 조건을 반복적으로 재사용할 때 매우 유용합니다. 한 가지 주의할 점은 DECLARE 문은 저장 프로시저나 함수 내부에서만 사용할 수 있으므로, 일반 쿼리 환경에서는 반드시 SET 방식으로 변수를 선언해야 한다는 것입니다. 또한 사용자 정의 변수는 대소문자를 구분하지 않지만, 가독성을 위해 의미 있는 이름을 사용하는 것이 좋습니다.