HOWTO · MySQL

MySQL 테이블에 타임스탬프 삽입

이 튜토리얼은 테이블 정의에 따라 타임스탬프를 MySQL 테이블에 삽입하는 다양한 접근 방식을 보여줍니다.

이 페이지의 내용

오늘은 테이블 정의를 기반으로 MySQL 테이블의 TIMESTAMP 타입 컬럼에 날짜와 시간을 삽입하는 방법에 대해 알아보겠습니다.

MySQL 테이블 생성

먼저 이 자습서에서 사용할 테이블을 만듭니다.

예제 코드:

CREATE TABLE demo_one(
    demo_one_id INT NOT NULL,
    demo_one_timestamp TIMESTAMP NOT NULL,
    PRIMARY KEY(demo_one_id)
);

테이블 정의에 대해 자세히 알아보려면 다음과 같이 DESCRIBE를 사용하십시오.

질문:

DESCRIBE demo_one;

출력:

+--------------------+-----------+------+-----+---------+-------+
| Field              | Type      | Null | Key | Default | Extra |
+--------------------+-----------+------+-----+---------+-------+
| demo_one_id        | int       | NO   | PRI | NULL    |       |
| demo_one_timestamp | timestamp | NO   |     | NULL    |       |
+--------------------+-----------+------+-----+---------+-------+
2 rows in set (0.08 sec)

두 속성 모두 NULL 값을 허용하지 않으며 이들에 대한 기본값이 없음을 알 수 있습니다. 이는 두 열의 값을 모두 삽입해야 한다는 의미입니다.

NOW()를 사용하여 타임스탬프를 MySQL 테이블에 삽입

TIMESTAMP를 MySQL 테이블에 삽입하는 첫 번째 방법은 NOW()입니다.

질문:

INSERT INTO demo_one (demo_one_id, demo_one_timestamp)
VALUES
(1, NOW());

SELECT 문을 사용하여 현재 테이블 데이터를 확인합니다.

질문:

SELECT * FROM demo_one;

출력:

+-------------+---------------------+
| demo_one_id | demo_one_timestamp  |
+-------------+---------------------+
|           1 | 2022-05-14 11:04:11 |
+-------------+---------------------+
1 row in set (0.00 sec)

CURRENT_TIMESTAMP()를 사용하여 타임스탬프를 MySQL 테이블에 삽입

CURRENT_TIMESTAMP() 메서드를 사용하여 이전에 생성한 MySQL 테이블에 TIMESTAMP를 삽입할 수도 있습니다.

질문:

INSERT INTO demo_onE (demo_one_id, demo_one_timestamp)
VALUES
(2, CURRENT_TIMESTAMP());

아래와 같이 SELECT 문을 사용하여 테이블의 데이터를 볼 수 있습니다.

질문:

SELECT * FROM demo_one;

출력:

+-------------+---------------------+
| demo_one_id | demo_one_timestamp  |
+-------------+---------------------+
|           1 | 2022-05-14 11:04:11 |
|           2 | 2022-05-14 11:06:01 |
+-------------+---------------------+
2 rows in set (0.03 sec)

MySQL 테이블의 TIMESTAMP 유형 열에 대해 Null 또는 기본값 설정

TIMESTAMP 유형 열에 대한 값을 삽입하지 않으려면 두 가지 방법으로 삽입할 수 있습니다. NULL 값을 허용하도록 해당 열을 설정하거나 열의 기본값을 설정하십시오.

예제 코드(demo_two_timestamp 필드에 null 값 허용):

CREATE TABLE demo_two(
    demo_two_id INT NOT NULL,
    # we can also write the following column definition
    # as `demo_two_timestamp TIMESTAMP NULL`
    demo_two_timestamp TIMESTAMP,
    PRIMARY KEY(demo_two_id)
);

INSERT INTO demo_two (demo_two_id, demo_two_timestamp) VALUES (1,null), (2, NOW());

SELECT * FROM demo_two;

출력:

+-------------+---------------------+
| demo_two_id | demo_two_timestamp  |
+-------------+---------------------+
|           1 | NULL                |
|           2 | 2022-05-14 11:15:18 |
+-------------+---------------------+
2 rows in set (0.04 sec)

여기에서 demo_two_timestamp 열의 값을 삽입하지 않으려면 NULL을 사용할 수 있습니다. 또한 특정 레코드에 대해 NULL을 원하지 않는 경우 NOW() 또는 CURRENT_TIMESTAMP()를 사용하여 올바른 값을 유연하게 삽입할 수 있습니다.

예제 코드(demo_three_timestamp 필드의 기본값 설정):

CREATE TABLE demo_three(
    demo_three_id INT NOT NULL,
    demo_three_timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(demo_three_id)
);

INSERT INTO demo_three (demo_three_id) VALUES (1);
INSERT INTO demo_three (demo_three_id, demo_three_timestamp) VALUES (2, NOW());
INSERT INTO demo_three (demo_three_id, demo_three_timestamp)
VALUES (3, CURRENT_TIMESTAMP());

SELECT * FROM demo_three;

출력:

+---------------+----------------------+
| demo_three_id | demo_three_timestamp |
+---------------+----------------------+
|             1 | 2022-05-14 11:21:57  |
|             2 | 2022-05-14 11:22:20  |
|             3 | 2022-05-14 11:22:40  |
+---------------+----------------------+
3 rows in set (0.00 sec)

demo_three_timestamp 열의 값을 입력하고 싶지 않거나 NULL을 원하지 않는 경우 위의 예에서 설명한 대로 DEFAULT CURRENT_TIMESTAMP를 사용하여 기본값을 설정할 수 있습니다.