Date Time

MySQL์€ ๋‚ ์งœ๋งŒ / ์‹œ๊ฐ„๋งŒ ํ˜น์€ ๋‚ ์งœ + ์‹œ๊ฐ„ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํƒ€์ž…์„ ์ง€์›ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž…์ €์žฅ ๊ณต๊ฐ„(Byte)

YEAR

1

DATE

3

TIME

3 + (๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์ €์žฅ ๊ณต๊ฐ„)

DATETIME

5 + (๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์ €์žฅ ๊ณต๊ฐ„)

TIMESTAMP

4 + (๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์ €์žฅ ๊ณต๊ฐ„)

๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„

๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ ์งœ ํƒ€์ž… ๋’ค ๊ด„ํ˜ธ ์•ˆ์— ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์„œ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์ €์žฅ ๊ณต๊ฐ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.(๊ธฐ๋ณธ๊ฐ’์€ 0) ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„ ์ €์žฅ ๊ณต๊ฐ„์€ 2์ž๋ฆฌ๋‹น 1๋ฐ”์ดํŠธ์”ฉ ๊ณต๊ฐ„์ด ๋” ํ•„์š”ํ•˜์—ฌ, MySQL 8.0์—์„œ๋Š” ๋งˆ์ดํฌ๋กœ์ดˆ๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅํ•œ DATETIME(6) ํƒ€์ž…์€ (5+3)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํƒ€์ž„์กด

MySQL์˜ ๋‚ ์งœ ํƒ€์ž…์€ ์ปฌ๋Ÿผ ์ž์ฒด์— ํƒ€์ž„์กด ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์•„ DATETIME / DATE ํƒ€์ž…์€ ํ˜„์žฌ DBMS ์ปค๋„ฅ์…˜์˜ ํƒ€์ž„์กด๊ณผ ๊ด€๊ณ„์—†์ด ์ž…๋ ฅ๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ TIMESTAMP๋Š” ํ•ญ์ƒ UTC ํƒ€์ž„์กด์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ํƒ€์ž„์กด์ด ๋‹ฌ๋ผ์ ธ๋„ ๊ฐ’์ด ์ž๋™์œผ๋กœ ๋ณด์ •๋œ๋‹ค.

CREATE TABLE tb_timezone
(
    fd_datetime  DATETIME,
    fd_timestamp TIMESTAMP
);

SET time_zone = 'Asia/Seoul';

INSERT INTO tb_timezone
VALUES (NOW(), NOW());

SELECT *
FROM tb_timezone;
-- +---------------------+---------------------+
-- | fd_datetime         | fd_timestamp        |
-- +---------------------+---------------------+
-- | 2023-05-05 05:09:00 | 2023-05-05 05:09:00 |
-- +---------------------+---------------------+

SET time_zone = 'America/Los_Angeles';

SELECT *
FROM tb_timezone;
-- +---------------------+---------------------+
-- | fd_datetime         | fd_timestamp        |
-- +---------------------+---------------------+
-- | 2023-05-05 05:09:00 | 2023-05-04 13:09:00 |
-- +---------------------+---------------------+

์ž๋™ ์—…๋ฐ์ดํŠธ ์„ค์ •

MySQL์€ ๋‚ ์งœ ํƒ€์ž…์— ๋Œ€ํ•ด INSERT / UPDATE ์‹œ ์ž๋™์œผ๋กœ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

CREATE TABLE tb_autoupdate
(
    id                   BIGINT NOT NULL AUTO_INCREMENT,
    created_at_datetime  DATETIME  DEFAULT CURRENT_TIMESTAMP,
    created_at_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at_datetime  DATETIME  DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    updated_at_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

MySQL 5.6 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” TIMESTAMP ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋งŒ ์ž๋™ ์—…๋ฐ์ดํŠธ ์„ค์ •์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ, 5.6 ์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” DATETIME ํƒ€์ž…์— ๋Œ€ํ•ด์„œ๋„ ์ž๋™ ์—…๋ฐ์ดํŠธ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

Last updated