MySql中的DATETIME类型和TIMESTAMP类型

  • DATETIME类型是为了存储既包含’日期’又包含’时间’的值。MySql以YYYY-MM-DD HH:MM:SS的格式来提取和显示DATETIME类型的值。DATETIME类型支持的范围是1000-01-01 00:00:009999-12-31 23:59:59
  • TIMESTAMP类型是为了存储既包含’日期’又包含’时间’的值。TIMESTAMP类型支持的范围是1970-01-01 00:00:01(UTC时间)到2038-01-19 03:14:07(UTC时间)。
  • DATETIMETIMESTAMP类型的值可以包含带小数的秒(最多6位),此时,DATETIME类型支持的范围是1000-01-01 00:00:00.0000009999-12-31 23:59:59.999999TIMESTAMP类型支持的范围是1970-01-01 00:00:01.000000(UTC时间)到2038-01-19 03:14:07.999999(UTC时间)。
  • 在存储的时候,MySql将TIMESTAMP类型的值从当前时区转换到UTC;反过来,在读取的时候,再从UTC转换到当前时区,也就是说,TIMESTAMP类型是和时区相关的。而DATETIME类型不会有这种时区问题。举个例子看一下吧。
    MySql中的DATETIME类型和TIMESTAMP类型
    MySql中的DATETIME类型和TIMESTAMP类型
  • DATETIMETIMESTAMP还支持自动初始化自动更新到当前的日期和时间。
  • 对于表中类型为DATETIMETIMESTAMP的列来说,既可以将当前时间戳赋为其默认值,也可以将当前时间戳赋为其自动更新的值,或者二者同时赋值。
  • 对于自动初始化的列来说,当插入行的时候,如果没有为该列指定值,那么其值将会被设置为当前时间戳。举个例子吧。
    MySql中的DATETIME类型和TIMESTAMP类型
  • 对于自动更新的列来说,如果其所在行的其他列的值被更新了,那么其值将会被设置为当前时间戳。举个例子吧。
    MySql中的DATETIME类型和TIMESTAMP类型
  • 如果一个类型为DATETIMETIMESTAMP的列的定义中明确指定了秒的精度,那么在该列的定义中的其他地方都要保持一致,说的有点不清楚,直接看例子吧。
    MySql中的DATETIME类型和TIMESTAMP类型