mysql设置值timestamp获取当前时间并自动更新方式

 更新时间:2023年07月24日 09:58:21   作者:ITzhongzi  
这篇文章主要介绍了mysql设置值timestamp获取当前时间并自动更新方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

需求描述:现需要数据库中一个字段来记录当前记录的最近修改时间或者创建时间,并自动更新维护。

timestamp类型的使用

示例如下:

创建一个数据库,并指定 uptime为 timestamp类型

create  table test(
	tid int primary key auto_increment,
	uptime timestamp,
	hobby varchar(20)
);

插入一条数据

insert into test (tid,uptime,hobby) values(null,null,null);

查看数据库数据

在这里插入图片描述

我们看到数据插入成功,但是uptime字段显示为 null

我们再插入一条数据,如下:

insert into test (tid,uptime,hobby) values(null,current_timestamp,null);

查看数据库数据如下:

在这里插入图片描述

我们看到第二条数据插入成功了,并且时间为 当前插入的时间

下面我们更新一下字段看 时间是否会自动维护

update test set hobby='篮球'  where tid < 4;

我们看效果

在这里插入图片描述

时间并没有自动更新,还是我们插入的时间,并不是修改的时间。

我们首先手动更新一下时间:

update test set uptime = current_timestamp where tid < 10;

效果如图:

在这里插入图片描述

当我们设置timestamp类型为current_timestamp时,系统会自动获取当前修改或者创建时间,但是不糊自动维护。

那么问题来了?

如何让timestamp类型自动维护

1.我们重新传建一个是数据库

create table test2(
	pid int primary key  auto_increment,
	uptime timestamp null default current_timestamp on update current_timestamp,
	hobby varchar(30)
);

2.我们先看一下创建后的表结构:

show create table test2;

在这里插入图片描述

我们注意一下 uptime 字段,可以为空,默认时间为current_timestamp, on update curret_timestamp设置可以使记录发生改变的时候时间自动改变。

插入一条没有默认时间的数据数据

insert into test2 values(null,null,null);

查看表结构

在这里插入图片描述

我们可以看到当我们没有设置默认值的时候时间默认为null

我们再插入一条带默认时间的数据

insert into test2 values(null,current_timestamp,null);

如图:

在这里插入图片描述

我们可以看到 有两条数据,一条有默认时间一条没有。

下面我们修改一下 两条记录,看时间是否会自动维护

update test2 set hobby='篮球' where pid < 5;

大功告成~

在这里插入图片描述

我们可以看到时间字段 在 自动维护,之前默认值为空的时候,在修改记录之后也会自动将时间改为 修改时间。

最后的完善

我们已经可以做到 时间自动维护了,还有一个 小缺点,

就是在刚开始插入时间时,我们没有传入默认时间的话,初始值为null,只有我们修改这条记录的时候他才会自动记录时间。

完善方案:

在创建数据库的时候设置 uptime字段为 not null

create table test3(pid int primary key auto_increment,uptime timestamp not null default current_timestamp on update current_timestamp);

表结构如下:

在这里插入图片描述

这样我们就会在创建该记录时候强制传入一个时间,并在修改的时候自动维护。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL主从复制与读写分离的使用示例

    MySQL主从复制与读写分离的使用示例

    在企业应用中,成熟的业务通常数据量都比较大,所以需要配置多台主从数据服务器以实现读写分离,本文主要介绍了MySQL主从复制与读写分离的使用示例,感兴趣的可以了解一下
    2023-09-09
  • MySQL中Case When用法及说明

    MySQL中Case When用法及说明

    这篇文章主要介绍了MySQL中Case When用法及说明,具有很好的参考价值,希望对大家有所帮助。
    2022-12-12
  • 使用mysql的disctinct group by查询不重复记录

    使用mysql的disctinct group by查询不重复记录

    非常不错的方法,用mysql的group by解决不重复记录的问题,看来我需要学习的地方太多了
    2008-08-08
  • mysql之validate_password_policy的使用

    mysql之validate_password_policy的使用

    这篇文章主要介绍了mysql之validate_password_policy的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Mac上安装Mysql的详细步骤及配置

    Mac上安装Mysql的详细步骤及配置

    这篇文章主要给大家介绍了关于Mac上安装Mysql的详细步骤及配置,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • MySQL 数据库范式化设计理论总结

    MySQL 数据库范式化设计理论总结

    这篇文章主要介绍了MySQL 数据库范式设计理论总结,数据库的规划化范式设计,在逻辑结构上可以让结构更加细粒度,容易理解,下文我们就来了解具体的内容介绍吧
    2022-04-04
  • MySQL字段时间类型该如何选择实现千万数据下性能提升10%~30%

    MySQL字段时间类型该如何选择实现千万数据下性能提升10%~30%

    这篇文章主要介绍了MySQL字段的时间类型该如何选择?才能实现千万数据下性能提升10%~30%,主要概述datetime、timestamp与整形时间戳相关的内容,并在千万级别的数据量中测试它们的性能,最后总结出它们的特点与使用场景
    2023-10-10
  • MySQL substr函数使用方法详解

    MySQL substr函数使用方法详解

    MySQL substr函数是指从一个内容中,按照指定条件,「截取」一个字符串,这个内容可以是数值或字符串,本文就来给大家讲讲MySQL substr函数的使用方法,需要的朋友可以参考下
    2023-07-07
  • MySQL InnoDB如何保证事务特性示例详解

    MySQL InnoDB如何保证事务特性示例详解

    这篇文章主要给大家介绍了关于MySQL InnoDB如何保证事务特性的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • Mysql中实现提取字符串中的数字的自定义函数分享

    Mysql中实现提取字符串中的数字的自定义函数分享

    这篇文章主要介绍了Mysql中实现提取字符串中的数字的自定义函数分享,通常这种问题是在编程语言中实现,本文使用自定义SQL函数实现,需要的朋友可以参考下
    2014-10-10

最新评论