MySql中的DATETIME类型和TIMESTAMP类型
分类:
文章
•
2022-12-31 00:19:11
-
DATETIME
类型是为了存储既包含’日期’又包含’时间’的值。MySql以YYYY-MM-DD HH:MM:SS
的格式来提取和显示DATETIME
类型的值。DATETIME
类型支持的范围是1000-01-01 00:00:00
到9999-12-31 23:59:59
。
-
TIMESTAMP
类型是为了存储既包含’日期’又包含’时间’的值。TIMESTAMP
类型支持的范围是1970-01-01 00:00:01
(UTC时间)到2038-01-19 03:14:07
(UTC时间)。
-
DATETIME
和TIMESTAMP
类型的值可以包含带小数的秒(最多6位),此时,DATETIME
类型支持的范围是1000-01-01 00:00:00.000000
到9999-12-31 23:59:59.999999
,TIMESTAMP
类型支持的范围是1970-01-01 00:00:01.000000
(UTC时间)到2038-01-19 03:14:07.999999
(UTC时间)。
- 在存储的时候,MySql将
TIMESTAMP
类型的值从当前时区转换到UTC;反过来,在读取的时候,再从UTC转换到当前时区,也就是说,TIMESTAMP
类型是和时区相关的。而DATETIME
类型不会有这种时区问题。举个例子看一下吧。

-
DATETIME
和TIMESTAMP
还支持自动初始化
和自动更新
到当前的日期和时间。
- 对于表中类型为
DATETIME
和TIMESTAMP
的列来说,既可以将当前时间戳赋为其默认值,也可以将当前时间戳赋为其自动更新的值,或者二者同时赋值。
- 对于
自动初始化
的列来说,当插入行的时候,如果没有为该列指定值,那么其值将会被设置为当前时间戳。举个例子吧。
- 对于
自动更新
的列来说,如果其所在行的其他列的值被更新了,那么其值将会被设置为当前时间戳。举个例子吧。
- 如果一个类型为
DATETIME
或TIMESTAMP
的列的定义中明确指定了秒的精度,那么在该列的定义中的其他地方都要保持一致,说的有点不清楚,直接看例子吧。