MySQL 시간 유형
首先可以将使用字符串类型来表示时间类型排除掉:
字符串占用需要 19字节,占用的空间比较大。
其次字符串表示的时间比较、处理比较麻烦,不能使用时间函数,比如:YEAR()
따라서 MySQL에서 일반적으로 사용되는 시간 유형은 TimeStamp와 DateTime입니다.
TimeStamp와 DateTime의 차이점:
유사점 :
- 둘 다의 형식은 동일합니다: YYYY-MM-DD HH:MM:SS
차이점:
-
DATETIME은 더 넓은 시간 범위에서 사용될 수 있습니다.
-
1000-01-01 00:00:00.000000
DATETIME이 나타낼 수 있는 범위:9999-12-31 23:59:59.999999
-
TIMESTAMP가 나타낼 수 있는 범위::
'1970-01-01 00:00:01.000000' UTC
~'2038-01-09 03:14:07.999999' UTC
삽입된 시간 범위가 TIMESTAMP 범위를 초과하면 오류가 발생합니다.
Incorrect datetime value: '2040-3-30 11:00:00' for column 'time_stamp'
-
-
점유된 공간
- TIMESTAMP는 4바이트를 차지합니다.
- DATETIME은 MySQL 5.6에서는 8바이트, 이후 버전에서는 5바이트를 차지합니다.
-
TIMESTAMP 유형은 시간대의 영향을 받으며 시간대 변경에 따라 변경됩니다.
예를 들어, time_test 테이블에는 다음 데이터가 포함되어 있습니다.
시스템의 시간대를 변경합니다(기본값은 동부 8이며, 이제 시스템 시간대를 동부 9로 변경).
테이블의 데이터를 다시 쿼리하여 TIMESTAMP 유형의 시간이 변경되었지만 DATETIME의 시간은 변경되지 않았음을 확인합니다.
-
now()를 삽입하고 저장된 실제 값이 현재 컴퓨터 시간과 일치하는지 확인합니다.
- TIMESTAMP: 해당 값은 먼저 UTC 시간 값으로 변환된 다음 데이터베이스에 저장되므로 일관성이 없을 수 있습니다.
- DATETIME: 변환이 수행되지 않으며 현재 시간과 일치합니다.
요약:
- TIMESTAMP는 공간을 적게 차지하며 일반적으로 시간대와 관련된 시나리오에서 사용됩니다. 물론 DATETIME은 어떤 방법을 통해 시간대와 연관될 수도 있습니다.
- TIMESTAMP의 결점은 표현할 수 있는 시간 범위가 너무 작다는 것이다.DATETIME은 일반적으로 시간대와 관련이 없고 상대적으로 큰 시간 범위가 필요한 시나리오에서 사용된다.