MySQL的datetime V.S timestamp

2022-11-29 08:49:28 浏览数 (1)

显示

TIMESTAMP列的显示格式与DATETIME列相同。

即显示宽度都固定在19字符,格式为:

代码语言:javascript复制
YYYY-MM-DD HH:MM:SS

范围

  • datetime 以YYYY-MM-DD HH:MM:SS格式检索和显示DATETIME值。支持的范围为1000-01-01 00:00:009999-12-31 23:59:59
  • TIMESTAMP值不能早于1970或晚于2037

储存

TIMESTAMP

  • 4个字节储存
  • 值以UTC格式保存
  • 时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区

datetime

  • 8个字节储存
  • 实际格式储存
  • 与时区无关

时区影响

  1. 先插入一个数据insert into t8 values(now(), now());
  2. 改变客户端时区(东9区,日本时区)。
  3. 再次显示插入的数据,变化了,timestamp类型的数据 增加了 1个小时

timestamp

timestamp 默认允许为 “非空”(not null by default), 如果你在定义“ts TIMESTAMP DEFAULT NULL” 是非法的。 可以指定为空 null ,“ts TIMESTAMP NULL" ,这时可以在添加语句改变默认值。

代码语言:javascript复制
ts2 TIMESTAMP NULL DEFAULT 0,
ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP 

default (一个表中只能有一个列选择下面其中一种)

代码语言:javascript复制
default CURRENT_TIMESTAMP 
default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
ON UPDATE CURRENT_TIMESTAMP 
ON UPDATE 见上2 

0 人点赞