巧用 MySql的CURRENT_TIMESTAMP

在使用mysql进行业务开发的过程中,设计数据库表结构时通常会有两个字段create_time和update_time,这两个分别代表者记录的创建时间和更新时间,用于业务的分析和查询。那除了每次业务记录有变更时主动去更新这个两个字段还有没有更优雅的更新方式呢?有,使用mysql的CURRENT_TIMESTAMP。

基本用法

字段创建时指定默认值

DEFAULT CURRENT_TIMESTAMP

记录更新时自动更新这个字段( 表示每次更新这条数据的时候,该字段都会更新成当前时间)

ON UPDATE CURRENT_TIMESTAMP

这两个操作是mysql数据库本身在维护,所以可以根据这个特性来生成【创建时间】和【更新时间】两个字段,且不需要代码来维护

使用

时间精确到秒

CREATE TABLE myTable 
(
 id INT,
 date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 
 date_validated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

时间精确到毫秒

CREATE TABLE myTable 
(
 id INT,
 date_registered TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', 
 date_validated TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间'
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

获取时间戳

### 秒
select UNIX_TIMESTAMP()

### 毫秒
select current_timestamp(6)

MySQL支持时间、日期时间和时间戳值的小数秒,精度高达微秒(6位):要定义包含小数秒部分的列,请使用语法类型_name(fsp),其中类型_name是时间、日期时间或时间戳,而fsp是小数秒精度。

好用的15个history命令例子
Linux uptime - 您的系统运行了多长时间