首页 > 数据库 >MySQL中datetime与timestamp的区别

MySQL中datetime与timestamp的区别

时间:2022-08-23 17:49:07浏览次数:95  
标签:00 timestamp datetime current 毫秒 MySQL null

在MySQL常用的场景中,会使用datetime和timestamp两种方式记录数据的时间,一般会精确到秒,主要用于记录每个表中数据的创建时间、修改时间等,甚至在设计表时,根据设计规范,会对每张表都添加一个时间的属性来记录数据的创建时间,也有可能再添加一个属性来记录数据的修改时间。那么下面的介绍会使得设置变得更加方便:

1.datetime
1)展现类型(存储内容):YYYY-MM-DD HH:MM:SS,固定占用8字节。

2)从5.6.5版本开始,可支持毫秒,datetime(n),其中n表示毫秒的长度。

3)默认值:可设置初始化值为当前时间,以及数据更新时自动更新修改时间。(若不需要默认值则无需设置)

如用户表需要记录用户信息的创建时间和修改时间,则创建表时对其进行定义:

create table sys_user (
    id int not null auto_increment,
    user_name varchar(200) not null,
    password varchar(300) not null,
    create_time datetime not null default current_timestamp,
    update_time datetime not null default current_timestamp on update current_timestamp,
primary key(id) 
);

通过设置当前时间(current_timestamp)进行默认值的设置。

2.timestamp
1)展现类型(存储内容):从'1970-01-01 00:00:00'开始到现在的毫秒数,固定占用4或7字节。

2)从5.6.5版本开始,可支持毫秒。不带毫秒是4字节,带毫秒数时就变成了7字节。因此当只有4字节时,其最大只能记录到'2038-01-19 00:00:00'。

3)默认值:可设置初始化值为当前时间,以及数据更新时自动更新修改时间。

将上述用户表中datetime类型修改为timestamp类型进行创建:

create table sys_user1 (
    id int not null auto_increment,
    user_name varchar(200) not null,
    password varchar(300) not null,
    create_time timestamp not null default current_timestamp,
    update_time timestamp not null default current_timestamp on update current_timestamp,
primary key(id) 
);

通过设置当前时间(current_timestamp)进行默认值的设置。

4)差异:timestamp的优点在于记录的是毫秒数,故具有时区属性。换句话说,就是此毫秒数,在任何时区不同的地方,都可以转化为当地的时间。缺点是存储的时间有局限性。相比之下,推荐使用datetime类型来记录时间。

就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
转自:https://www.cnblogs.com/zys2019/p/16028465.html

标签:00,timestamp,datetime,current,毫秒,MySQL,null
From: https://www.cnblogs.com/geek233/p/16617170.html

相关文章

  • mysql的索引
    索引是什么?索引是对表中一列或多列数据有序排列的一种数据结构。由此可见,索引是一种有序的数据结构,作用是为了快速定位要查找到数据。mysql索引采用什么样的数据结构mys......
  • Mysql导入数据的时候报错Unknown collation: 'utf8mb4_0900_ai_ci'什么问题?
    最近从线上把数据导出来想搭建到本地的时候报了这么一个错?[ERR]1273-Unknowncollation:'utf8mb4_0900_ai_ci'这个错误究竟是什么原因影响的呢?是因为我们导出数据的......
  • sping boot使用LocalDate和LocalDateTime当入参时,报缺少必要参数
    时间字符串作为普通请求参数传入时,转换用的是Converter增加一个时间转换的配置类importcom.sjaco.lccloud.common.pay.kit.DateKit;importcom.sjaco.lccloud.common.......
  • rocky二进制安装mysql8.0
    (ubuntu的有点问题)点击查看代码#!/bin/bashVersion=`cat/etc/os-release|awk-F'"|''/^NAME/{print$2}'`SQLSERVER=mysql-8.0.28-linux-glibc2.12-x86_64.tar.x......
  • Mysql和Redis数据如何保持一致
    先阐明一下Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis是用来当缓存,用来提升数据访问的性能。关于如何保证Mysql和Redis中的数据一致......
  • mysql大数据表删除优化方案
    先复制这张表,然后在复制表上做删除操作,最后再替换两张表的表名,把复制表表名改为原表名。大量删除数据可能由于一些原因导致失败、死锁、超时。所以把删除的操作放到复制表......
  • MySQL事务MVCC、undolog和redolog
    MySql的MVCC多版本控制undolog:回滚日志(保证一致性)只有在ReadCommited和RepeatableRead隔离级别有用redolog:重写日志(保证持久性)示例讲解 ReadCommited隔离级别(4)se......
  • Django mysql 操作类
    Django-Chain-PyMySQLEasytousePyMySQLindjango.对PyMySQL进行封装,增加链式操作,方便快捷进行CURD操作注:基于Chain-PyMySQL->https://github.com/Tiacx/ch......
  • Flask 学习-12.Flask-SQLAlchemy链接mysql数据库
    前言SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy是目前python中最强大的ORM框架,功能全面。Flask-SQLAlche......
  • MySQL学习(1)---MySQL概述
    什么是数据库概述数据库(Database)是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统DBMS(Da......