MySQL 시간 유형

MySQL 시간 유형

首先可以将使用字符串类型来表示时间类型排除掉:
   字符串占用需要 19字节,占用的空间比较大。
   其次字符串表示的时间比较、处理比较麻烦,不能使用时间函数,比如:YEAR()

따라서 MySQL에서 일반적으로 사용되는 시간 유형은 TimeStamp와 DateTime입니다.

TimeStamp와 DateTime의 차이점:

유사점 :

  • 둘 다의 형식은 동일합니다: YYYY-MM-DD HH:MM:SS

차이점:

  1. DATETIME은 더 넓은 시간 범위에서 사용될 수 있습니다.

    1. 1000-01-01 00:00:00.000000DATETIME이 나타낼 수 있는 범위:9999-12-31 23:59:59.999999

    2. 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'

  2. 점유된 공간

    1. TIMESTAMP는 4바이트를 차지합니다.
    2. DATETIME은 MySQL 5.6에서는 8바이트, 이후 버전에서는 5바이트를 차지합니다.
  3. TIMESTAMP 유형은 시간대의 영향을 받으며 시간대 변경에 따라 변경됩니다.

    예를 들어, time_test 테이블에는 다음 데이터가 포함되어 있습니다.
    여기에 이미지 설명을 삽입하세요.
    시스템의 시간대를 변경합니다(기본값은 동부 8이며, 이제 시스템 시간대를 동부 9로 변경).
    여기에 이미지 설명을 삽입하세요.

    테이블의 데이터를 다시 쿼리하여 TIMESTAMP 유형의 시간이 변경되었지만 DATETIME의 시간은 변경되지 않았음을 확인합니다.
    여기에 이미지 설명을 삽입하세요.

  4. now()를 삽입하고 저장된 실제 값이 현재 컴퓨터 시간과 일치하는지 확인합니다.

    • TIMESTAMP: 해당 값은 먼저 UTC 시간 값으로 변환된 다음 데이터베이스에 저장되므로 일관성이 없을 수 있습니다.
    • DATETIME: 변환이 수행되지 않으며 현재 시간과 일치합니다.

요약:

  • TIMESTAMP는 공간을 적게 차지하며 일반적으로 시간대와 관련된 시나리오에서 사용됩니다. 물론 DATETIME은 어떤 방법을 통해 시간대와 연관될 수도 있습니다.
  • TIMESTAMP의 결점은 표현할 수 있는 시간 범위가 너무 작다는 것이다.DATETIME은 일반적으로 시간대와 관련이 없고 상대적으로 큰 시간 범위가 필요한 시나리오에서 사용된다.

추천

출처blog.csdn.net/qq_50876039/article/details/127192403