MySQL TIMESTAMP(时间戳)详解

该文章已生成可运行项目,

在创建表时如果表中有一个字段类型为TIMESTAMP,则该字段默认的生成语句为:

CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL,
  `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=gbk

如果有两个字段类型为TIMESTAMP,则生成语句为:

CREATE TABLE `test` (
  `id` INT(11) DEFAULT NULL,
  `ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `utime` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=INNODB DEFAULT CHARSET=gbk
TIMESTAMP设置默认值是Default CURRENT_TIMESTAMP、

TIMESTAMP设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP

一个表中至多只能有一个字段设置CURRENT_TIMESTAMP(当前时间)

1、TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

在创建新记录和修改现有记录的时候都对这个数据列刷新
 
2、TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它

3、TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

在创建新记录的时候把这个字段设置为0,以后修改时刷新它


作者:itmyhome

出处:http://blog.csdn.net/itmyhome1990/article/details/39342245


本文章已经生成可运行项目
MySQLTIMESTAMP 字段用于存储日期和时间信息,范围从 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。它会根据时区进行转换,与服务器或客户端的时区设置有关。 ### 默认值和自动更新规则 - 对于表中第一个出现的 TIMESTAMP 字段,默认设置为 `DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`。即插入新记录时,该字段会自动设置为当前时间戳;在更新其他字段时,也会自动将该字段修改为当前时间戳。而其他 TIMESTAMP 字段默认值为 '0000-00-00 00:00:00',且没有自动更新行为 [^1][^2]。 - `default CURRENT_TIMESTAMP` 和 `On update CURRENT_TIMESTAMP` 可以同时修饰一个列。被这两个属性任意一个修饰的列定义为 `timestamps_with_niladic`,一个表中最多只能存在一个定义为 `timestamps_with_niladic` 的列,若超过 1 个,则建表失败 [^4]。 - 若手动指定多个 TIMESTAMP 字段都为 `DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`,MySQL 会报错,创建表失败 [^2]。 ### 版本差异 在 MySQL 5.6 版本之前,数据表中只能有一个属性为 TIMESTAMP 的列;但在 5.6 版本之后,允许多个 TIMESTAMP 字段存在 [^3]。 ### 示例 ```sql CREATE TABLE `test2` ( id int(11) NOT NULL, t1 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, t2 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 在这个示例中,`t1` 字段插入时会自动设置为当前时间戳,更新其他字段时也会自动更新;`t2` 字段默认值为 '0000-00-00 00:00:00' [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值