MySQL——时间类型DATETIME和TIMESTAMP的选择

  • Post author:
  • Post category:mysql




1、Year

见名之意,year用于存储年,存储时只需要一个字节,插入数据时可以使用各种格式指定YEAR值(非常节约内存,所以当你只需要年的时候,用此字段合适)。



2、Time

time用于存储时间信息,存储时需要三个字节。

虽然,小时的范围是0~23,但是为了表示某种特殊需要的时间间隔,将Time类型的范围扩大了。而且还支持了负值。

(推荐甚至强制要求必须)字符串格式:‘HH:MM:SS’。

例如,输入‘123456’,Time类型会转换成12:34:56;



3、Date

date用于存储日期,没有时间部分,存储时需要三个字节。

支持的常见插入格式为:

(推荐甚至强制要求必须) ‘YYYY-MM-DD’或‘YYYYMMDD’格式的字符串表示,这种方式可以表达的范围是‘1000-01-01’~‘9999-12-31’。



4、Datetime

datetime类型使用8个字节来表示日期和时间。

支持的常见插入格式为:

(推荐甚至强制要求必须)‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’格式的字符串表示。这种方式可以表达的范围是‘1000-01-01 00:00:00’~~‘9999-12-31 23:59:59’。



5、timestamp

timestamp类型使用4个字节来表示日期和时间。

(推荐甚至强制要求必须)‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’格式的字符串表示。它的取值范围为“1970-01-01 00:00:01” UTC ~ “2038-01-19 03:14:07” (和时区有关)



6、Datetime和timestamp二者主要区别

1.取值范围:

  • timestamp存储需要四个字节,它的取值范围为“1970-01-01 00:00:01” UTC ~ “2038-01-19 03:14:07” (和时区有关)
  • datetime存储需要八个字节,它的取值范围为“1000-01-01 00:00:00” ~ “9999-12-31 23:59:59”(和时区无关,怎么存入怎么返回,对程序员友好)

2、timestamp类型还有一个很大的特殊点,就是时间是根据时区来显示的。

例如,在东八区插入的timestamp类型为2009-09-30 14:21:25,在东七区显示时,时间部门就变成了13:21:25,在东九区显示时,时间部门就变成了15:21:25。



3、总结:timestamp类型的范围太小,其最大时间为2038-01-19 11:14:07。

如果插入时间的比这个大,将会数据库插入0000-00-00 00:00:00。所以,还是选择dateTime类型比较安全。



版权声明:本文为peanutwzk原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。