分享

关于数据库datetime、timestamp的一个问题记录

 ddguo2001 2019-11-24

timestamp存在binlog里面的是uniox时间戳 利用binlog恢复数据的时候会恢复成时间戳。。无法对应到具体的年月日

timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;

datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’

CURRENT_TIMESTAMP为什么能用于datetime类型
在mysql 5.6之前的版本,CURRENT_TIMESTAMP只能用于timestamp类型,
5.6版本之后,CURRENT_TIMESTAMP也能用于datetime类型了
select version()查数据库版本

所以5.6以后的版本也可以用下面的建表语句:

`CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UPDATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

insert into tablename 的时候 1.CREATE_TIME字段要加上,值value对应的不能为空 2.CREATE_TIME字段不加,则数据库默认会用CURRENT_TIMESTAMP(当前时间);同理update也一样,要么无视这个字段,要么设置这个字段,否则会出现不期望的效果

所以,datetime要更实用一点(除了占用的存储空间,DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节)

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多