关于MySQL中的timestamp类型

来源:互联网 发布:天刀回归活动网络繁忙 编辑:程序博客网 时间:2024/06/08 17:39

timestamp的显示格式与datetime相同,格式都为YYYY-MM-DD HH:MM:SS

那mysql数据库为何需要两个相同的类型呢?

答:首先是因为 timestamp占用的存储空间比datetime要少,但是我觉得更重要的是timestamp具有自动初始化和自动更新的功能。


timestamp具有:
  1)自动初始化
  2)自动更新 的功能


       如过你想在修改数据列的时候 ,数据库能帮你自动修改 字段 modify_time列,那把modify_time定义为timestamp类型最合适不过了。而且这样的情况在我们的应用程序中很常见,如用户自己修改联系信息,如果有个修改时间字段,那这个修改时间就可以定义为timestamp类型。


使用这个类型的时候需要注意:
        虽然timestamp列类型具有
自动初始化自动更新的功能,你可以把自动初始化或自动更新,或者两者都选给一个列但是你要记住只是一个列

你不能把一个列 定义为自动初始化,而另外的列定义为自动更新,即这两个属性只能针对数据库表里的某一个列。


(经过测试 这个类型和 数据列定义为 NULL 或 NOT  NULL有关系)

测试组一: 数据列定义为允许 NULL

 `modify_time` timestamp NULL DEFAULT NULL,

从结果来看,插入数据 modify_time列为空,而且不会自动更新。


 `modify_time` timestamp  NULL DEFAULT  CURRENT_TIMESTAMP,

从运行结果来看 modify_time列会自动初始化,但不会自动更新


 `modify_time` timestamp NULL DEFAULT  CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
这个不用猜,肯定是 即会自动初始化又会自动更新。




测试组二:数据列定义为不允许 NULL

`modify_time` timestamp  NOT NULL,

从结果看 这个 即会自动初始化又会自动更新,就是说当我们定义一个timestamp的列为not null时,效果等同于 default current_timestamp on update current_timestamp;


 `modify_time` timestamp  NOT NULL DEFAULT CURRENT_TIMESTAMP,

从结果看 只会自动 初始化 不会自动更新


`modify_time` timestamp  NOT NULL DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP

这个不用说 ,即会自动初始化又会自动更新。



结论很简单:只要记住 当timestamp数据量定义为 not null ,而且没有默认值和 on  update  current_timestamp,其效果等同于 not  null  default current_timestamp  on update current_timestamp


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑打开没网怎么办 网络配适器无法运行怎么办 电脑dns没有响应怎么办 win7系统没有网上邻居怎么办 win10网络重置了怎么办 win7桌面没有网上邻居怎么办 win7电脑没有网上邻居怎么办 无线网连接受限怎么办 win7账户被锁定怎么办 贷款sdk授权失败怎么办 京东保价发票怎么办 淘宝购物出现质量问题怎么办 淘宝购物降价了怎么办 淘宝购物物流慢怎么办 在淘宝购物退货怎么办 淘宝购物未付款怎么办 淘宝购物余额不足怎么办 淘宝购物漏发货怎么办 京东618无货怎么办 iis默认文档无效怎么办? 购物卡没有磁性怎么办 墙面贴纸没有贴怎么办 车显示电池符号怎么办 遇上北京购物团怎么办 钱柜老是钱不见怎么办 写真顾客退单怎么办 电视不支持投屏怎么办 qq转错账的钱怎么办 qq关注不了别人怎么办 换货忘记要单号怎么办 快递提前签收了怎么办 签收了不明快递怎么办 京东签收了怎么办 快递被签收了怎么办 香港旅游团强制购物怎么办 爱奇艺京东会员领不了怎么办 买手机买到翻新机怎么办 买了翻新机怎么办 苹果四激活出错怎么办 电脑登陆密码忘记了怎么办 手机号不用微信怎么办