MySQL에서 DATETIME과 TIMESTAMP 데이터 유형의 차이점은 무엇입니까?
소개
MySQL을 사용해 본 적이 있고 테이블 구조를 생성해야 했다면 DATETIME
및 TIMESTAMP
데이터 유형이 많은 유사점을 가지고 있기 때문에 언뜻 보기에 매우 유사하다는 것을 알아차렸을 것입니다.
이 튜토리얼에서는 각각을 살펴보고 언제 사용해야 하는지 알 수 있도록 둘 사이의 주요 차이점을 알아봅니다.
https://stackoverflow.com/questions/409286/should-i-use-the-datetime-or-timestamp-data-type-in-mysql
날짜 시간
DATETIME
유형은 날짜와 시간을 모두 포함하는 값에 사용됩니다.
예를 들어, 값을 검색할 때 MySQL은 값을 YYYY-MM-DD hh:mm:ss
형식으로 표시합니다.
중요한 차이점은 현재 지원되는 범위가 1000-01-01 00:00:00
~ 9999-12-31 23:59:59
이라는 것입니다.
DATETIME
는 날짜와 시간을 저장하지만 특정 시간대에 대한 참조가 없기 때문에 리터럴 값으로 생각할 수 있습니다. 따라서 NOW()
값을 저장하면 예를 들어 서버 시간대가 사용됩니다. 삽입되면 DATETIME
값은 현재 세션에 관계없이 동일하게 유지됩니다.
이것은 아래의 예를 살펴보고 나면 조금 더 명확해질 중요한 구분입니다.
타임스탬프
DATETIME
와 마찬가지로 TIMESTAMP
데이터 유형에는 YYYY-MM-DD hh:mm:ss
형식의 날짜와 시간이 모두 포함됩니다.
그러나 DATETIME
와 달리 TIMESTAMP
데이터 유형은 1970-01-01 00:00:01
UTC에서 2038-01-19 03:14:07
UTC 사이의 고정된 범위를 갖습니다. 모든 애플리케이션 및 사용 사례에 적합하지 않을 수 있으므로 이 제한을 항상 고려해야 합니다. 이 특정 범위에 대한 자세한 내용은 Unix Time 에 대해 자세히 읽어보십시오.
명심해야 할 중요한 사항은 TIMESTAMP
열의 값을 표시할 때 현재 표준 시간대로 변환된다는 것입니다. MySQL은 값을 저장할 때 TIMESTAMP
값을 현재 시간대에서 UTC
로 변환하지만 그런 다음 값을 다시 UTC에서 검색의 현재 시간대로 변환합니다.
이것을 좀 더 명확하게 하기 위해 다음 예를 살펴보겠습니다!
예시
두 데이터 유형 각각에 대해 단 두 개의 열이 있는 매우 간단한 테이블을 만들어 보겠습니다.
CREATE TABLE demo_table(
datetime_column DATETIME,
timestamp_column TIMESTAMP
);
그런 다음 NOW()
를 사용하여 둘 다에 동일한 값을 삽입해 보겠습니다.
INSERT INTO demo_table VALUES ((NOW()),(NOW()));
그런 다음 두 열의 값을 확인합니다.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
지금까지 두 열의 값은 동일합니다. 하지만 현재 시간대를 확인해 보겠습니다.
SHOW VARIABLES LIKE '%time_zone%';
// Output
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+--------+
다음으로 현재 세션의 시간대를 변경해 보겠습니다.
SET time_zone="America/New_york";
참고: 다음 오류가 발생하면 ERROR 1298 (HY000): Unknown or incorrect time zone: 'America/new_york'
다른 터미널 창에서 다음 명령을 실행할 수 있습니다.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
그런 다음 출력 값이 어떻게 변경되는지 봅시다.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 12:42:16 |
+---------------------+---------------------+
보시다시피 datetime_column
의 표시된 값은 그대로 유지되었지만 timestamp_column
값이 변경되어 현재 시간대를 참조하고 있습니다.
결론
이게 전부입니다! 이제 datetime
와 timestamp
의 주요 차이점이 무엇인지 더 잘 알 수 있을 것입니다!
일반적으로 SQL에 대해 더 자세히 알고 싶다면 다음 무료 전자책을 추천합니다.
DATETIME
유형은 날짜와 시간을 모두 포함하는 값에 사용됩니다.예를 들어, 값을 검색할 때 MySQL은 값을
YYYY-MM-DD hh:mm:ss
형식으로 표시합니다.중요한 차이점은 현재 지원되는 범위가
1000-01-01 00:00:00
~ 9999-12-31 23:59:59
이라는 것입니다.DATETIME
는 날짜와 시간을 저장하지만 특정 시간대에 대한 참조가 없기 때문에 리터럴 값으로 생각할 수 있습니다. 따라서 NOW()
값을 저장하면 예를 들어 서버 시간대가 사용됩니다. 삽입되면 DATETIME
값은 현재 세션에 관계없이 동일하게 유지됩니다.이것은 아래의 예를 살펴보고 나면 조금 더 명확해질 중요한 구분입니다.
타임스탬프
DATETIME
와 마찬가지로 TIMESTAMP
데이터 유형에는 YYYY-MM-DD hh:mm:ss
형식의 날짜와 시간이 모두 포함됩니다.
그러나 DATETIME
와 달리 TIMESTAMP
데이터 유형은 1970-01-01 00:00:01
UTC에서 2038-01-19 03:14:07
UTC 사이의 고정된 범위를 갖습니다. 모든 애플리케이션 및 사용 사례에 적합하지 않을 수 있으므로 이 제한을 항상 고려해야 합니다. 이 특정 범위에 대한 자세한 내용은 Unix Time 에 대해 자세히 읽어보십시오.
명심해야 할 중요한 사항은 TIMESTAMP
열의 값을 표시할 때 현재 표준 시간대로 변환된다는 것입니다. MySQL은 값을 저장할 때 TIMESTAMP
값을 현재 시간대에서 UTC
로 변환하지만 그런 다음 값을 다시 UTC에서 검색의 현재 시간대로 변환합니다.
이것을 좀 더 명확하게 하기 위해 다음 예를 살펴보겠습니다!
예시
두 데이터 유형 각각에 대해 단 두 개의 열이 있는 매우 간단한 테이블을 만들어 보겠습니다.
CREATE TABLE demo_table(
datetime_column DATETIME,
timestamp_column TIMESTAMP
);
그런 다음 NOW()
를 사용하여 둘 다에 동일한 값을 삽입해 보겠습니다.
INSERT INTO demo_table VALUES ((NOW()),(NOW()));
그런 다음 두 열의 값을 확인합니다.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
지금까지 두 열의 값은 동일합니다. 하지만 현재 시간대를 확인해 보겠습니다.
SHOW VARIABLES LIKE '%time_zone%';
// Output
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+--------+
다음으로 현재 세션의 시간대를 변경해 보겠습니다.
SET time_zone="America/New_york";
참고: 다음 오류가 발생하면 ERROR 1298 (HY000): Unknown or incorrect time zone: 'America/new_york'
다른 터미널 창에서 다음 명령을 실행할 수 있습니다.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
그런 다음 출력 값이 어떻게 변경되는지 봅시다.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 12:42:16 |
+---------------------+---------------------+
보시다시피 datetime_column
의 표시된 값은 그대로 유지되었지만 timestamp_column
값이 변경되어 현재 시간대를 참조하고 있습니다.
결론
이게 전부입니다! 이제 datetime
와 timestamp
의 주요 차이점이 무엇인지 더 잘 알 수 있을 것입니다!
일반적으로 SQL에 대해 더 자세히 알고 싶다면 다음 무료 전자책을 추천합니다.
두 데이터 유형 각각에 대해 단 두 개의 열이 있는 매우 간단한 테이블을 만들어 보겠습니다.
CREATE TABLE demo_table(
datetime_column DATETIME,
timestamp_column TIMESTAMP
);
그런 다음
NOW()
를 사용하여 둘 다에 동일한 값을 삽입해 보겠습니다.INSERT INTO demo_table VALUES ((NOW()),(NOW()));
그런 다음 두 열의 값을 확인합니다.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 17:42:16 |
+---------------------+---------------------+
지금까지 두 열의 값은 동일합니다. 하지만 현재 시간대를 확인해 보겠습니다.
SHOW VARIABLES LIKE '%time_zone%';
// Output
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+--------+
다음으로 현재 세션의 시간대를 변경해 보겠습니다.
SET time_zone="America/New_york";
참고: 다음 오류가 발생하면
ERROR 1298 (HY000): Unknown or incorrect time zone: 'America/new_york'
다른 터미널 창에서 다음 명령을 실행할 수 있습니다.mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
그런 다음 출력 값이 어떻게 변경되는지 봅시다.
SELECT * FROM demo_table;
// Output
+---------------------+---------------------+
| datetime_column | timestamp_column |
+---------------------+---------------------+
| 2021-12-04 17:42:16 | 2021-12-04 12:42:16 |
+---------------------+---------------------+
보시다시피
datetime_column
의 표시된 값은 그대로 유지되었지만 timestamp_column
값이 변경되어 현재 시간대를 참조하고 있습니다.결론
이게 전부입니다! 이제 datetime
와 timestamp
의 주요 차이점이 무엇인지 더 잘 알 수 있을 것입니다!
일반적으로 SQL에 대해 더 자세히 알고 싶다면 다음 무료 전자책을 추천합니다.
이미 매일 SQL을 사용하고 있고 데이터 분석의 대기 시간을 획기적으로 줄이는 방법을 찾고 있다면 다음을 확인하십시오Materialize!
Materialise는 실시간 분석을 위한 스트리밍 데이터베이스입니다. 증분 보기 업데이트를 제공하는 반응형 데이터베이스이며 개발자가 표준 SQL을 사용하여 스트리밍 데이터로 쉽게 구축할 수 있도록 도와줍니다.
Reference
이 문제에 관하여(MySQL에서 DATETIME과 TIMESTAMP 데이터 유형의 차이점은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bobbyiliev/what-is-the-difference-between-datetime-and-timestamp-data-type-in-mysql-1f5b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)