一、MySQL的 timestamp 类型
TIMESTAMP 列的格式为 YYYY-MM-DD HH:MM:SS
,固定为 19 个字符。TIMESTAMP 值的范围从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC。
占用空间 4 个字节。但是只使用到 pow(2,31) - 1
这么大
当将 TIMESTAPM 值插入到表中,MySQL 会将其从连接的时区转换为 UTC 后进行存储。当查询 TIMESTAMP 值时,MySQL 会将 UTC 值转换回连接的时区。
1 | # 设置时区 |
设置 TIMESTAMP 列的自动初始化和自动更新
1 | # created_time 字段会被自动初始化为当前时间 |
如果存储小数秒,需要额外增加 3 个字节。如果存入的是 NULL,会自动存储当前时间
二、MySQL的 datatime 类型
DATATIME 列的格式为 YYYY-MM-DD HH:MM:SS
,范围 1000-01-01 00:00:00
到 9999-12-31 23:59:59
在 MySQL 5.6.4 之前,DATATIME 值需要 8 个字节存储。后面的版本使用 5 个字节存储,随着精度不同占用空间不同。
DATETIME
值可以包括具有YYYY-MM-DD HH:MM:SS[.fraction]
例如的格式的尾随小数秒到微秒 2015-12-20 10:01:00.999999
。精度 1-2 占用 1 个字节,精度 3-4 占用 2 个字节,精度 5-6 占有 3 个字节。
例如:2015-12-20 10:01:00.999999
需要8个字节,5个字节用于2015-12-20 10:01:00
,3个字节用于.999999
而2015-12-20 10:01:00.9
只需要6个字节,1个字节用于小数秒精度。
DATATIME 值存储没有时区的概念。如果存入的是 NULL,不会自动存储当前时间,会直接存入 NULL 值。
三、时间函数
now()
获取当前日期+时间
current_timestam()
获取当前时间戳