日期类型区别(3)- mysql时间类型timestamp知识点

mysql日期时间类型
日期类型    字节    最小值    最大值
DATE    4    1000-01-01    9999-12-31
DATETIME    8    1000-01-01    00:00:00
TimeStamp    4    197001010800001    2038年
Time    3    -838:59:59    838:59:59
year    1    1901    2155
知识点: 
1 如果需要经常插入或者更新日期为当前时间 则通常使用Timestamp,timestamp值返回后显示为”YYYY-MM-DD HH:MM:SS”格式的字符串 
2 如果只表示年份可以用year 他比date占用更少的空间year有2位或者4位格式的年默认为4位 
3 每种日期类型都有一个有效值范围如果超出这个范围将以零值进行存储

DATE TIME DATETIME为最常用

实例:

CREATE TABLE t (d date , t  time , dt datetime);
1
desc t
1


insert INTO t VALUES(NOW(),NOW(),NOW())
1
select * from t
1


DATETIME是date和time的结合

Timestamp实例
CREATE TABLE ttt (t timestamp);
1
 
系统自动给timestamp加上了默认值

INSERT INTO ttt VALUES(NULL)
1
select * from ttt
1


插入null 系统自动插入了当前时间戳 
mysql中只给表中的第一个timestamp字段类型设置默认值为当前日期 如果有第二个timestamp类型则默认值设置为0

alter TABLE ttt add t2 timestamp;
1
SHOW CREATE TABLE ttt;
1
CREATE TABLE `ttt` (
  `t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `t2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1
2
3
4
mysql一个表中值允许一列的默认值为current_timestamp

INSERT INTO ttt VALUES(null,null)
1


update ttt set t2 = '2015-11-28 03:00:40' where t='2015-11-27 03:00:40'
1


t2 变了 t也变化成了当前时间 这是一个大坑 尤其是在一些需要按创建时间排序的需求中

所以结论是在mysql中使用时间字段timestamp时注意一定要 加上初始化的值 并且不能是current_timestamp

修改t为有初始值

alter TABLE ttt   change `t` `t` timestamp default '0000-00-00 00:00:00' NOT NULL ;
desc ttt
1
2


此时再去

update ttt set t2 = '2015-11-28 04:00:40' where t='2015-11-27 03:02:50'
1



转载地址:https://blog.csdn.net/lucas421634258/article/details/50059859 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值