• MySQL中datetime与timestamp的区别


    在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类型来记录时间。

  • 相关阅读:
    python — 文件操作
    Android存储
    JAVA 里面 synchronized作用
    UML元素
    ubuntu18.04 命令行安装gradle
    UML时序图
    视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
    现行最小二乘过约束和欠约束如何求解
    SLAM-G2O分析
    自定义Gradle插件
  • 原文地址:https://www.cnblogs.com/zys2019/p/16028465.html
Copyright © 2020-2023  润新知