>  기사  >  데이터 베이스  >  MySQL DATETIME과 TIMESTAMP 데이터 유형의 차이점은 무엇입니까?

MySQL DATETIME과 TIMESTAMP 데이터 유형의 차이점은 무엇입니까?

王林
王林앞으로
2023-09-17 23:41:031097검색

MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?

두 데이터 유형 모두 "YYYY-MM-DD HH:MM:SS" 형식으로 데이터를 저장하며 날짜와 시간을 포함합니다. 이러한 유사점에도 불구하고 다음과 같은 차이점이 있습니다. -

  • Range - 날짜/시간 데이터 유형은 1000 - 01-01 00:00:00 및 9999-12-31 23: 59:59 사이의 날짜와 시간을 지원합니다. 그러나 타임스탬프 데이터 유형은 "1970-01-01 00:00:01"과 "2038-01-19 08:44:07" 사이의 날짜와 시간을 지원합니다.
  • Size - 날짜 시간에는 소수 초 단위 데이터 저장을 위해 5바이트와 3바이트의 추가 바이트가 필요합니다. 반면, 타임스탬프 데이터 유형에는 소수 초 데이터 저장을 위해 4바이트와 3바이트의 추가 바이트가 필요합니다. 그러나 MySQL 5.6.4 이전에는 DateTime에 소수 초 데이터 저장을 위해 8바이트와 3바이트가 추가로 필요했습니다.
  • 한 시간대로의 변환 - 실제로 MySQL5+에서는 타임스탬프 값이 현재 시간에서 UTC로 또는 그 반대로 변환되지만 날짜/시간은 변환되지 않습니다.
  • Indexing - 타임스탬프 데이터는 인덱싱할 수 있지만 날짜/시간 데이터는 인덱싱할 수 없습니다.
  • Indexing - 타임스탬프 데이터는 인덱싱할 수 있지만 날짜/시간 데이터는 인덱싱할 수 없습니다. li>
  • Query Cache - 타임스탬프 데이터 유형의 쿼리는 캐시할 수 있지만 날짜/시간 데이터 유형의 쿼리는 캐시할 수 없습니다.

위는 DATETIME과 TIMESTAMP 데이터 유형의 주요 차이점 중 일부입니다. 다음 예에서 이를 보여줍니다.

Example

mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.44 sec)

mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.04 sec)

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

mysql> Create table test_timestamp(time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.64 sec)

mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.06 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+
1 row in set (0.00 sec)

이제 다음 쿼리에서는 시간대를 UTC-05:00으로 변경했습니다. TIMESTAMP 데이터 유형의 테이블에 대한 결과도 변경되었습니다.

mysql> SET @@session.time_zone = '-5:00';
Query OK, 0 rows affected (0.00 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 06:59:50 |
+---------------------+
1 row in set (0.00 sec)

출력

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

위 내용은 MySQL DATETIME과 TIMESTAMP 데이터 유형의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제