MySQL 中 datetime 和 timestamp 的区别与选择

yizhihongxing

下面是针对 “MySQL 中 datetime 和 timestamp 的区别与选择” 的详细攻略:

1. datetime 和 timestamp 的定义

  • datetime:表示年月日时分秒,格式为 YYYY-MM-DD HH:MM:SS,其中“年”是4位数字,“月”和“日”均为2位数字,“时”、“分”、“秒”也均是2位数字。

  • timestamp:也表示年月日时分秒,格式与 datetime 类似,但其特殊之处在于可以范围更广。timestamp 可以表示的范围是从 1970-01-01 00:00:012038-01-19 03:14:07

2. datetime 和 timestamp 的区别

  1. 存储方式不同:datetime 存储方式为固定的 8 个字节,timestamp 存储方式为固定的 4 个字节。

  2. 范围不同:datetime 的表示范围是 1000-01-01 00:00:009999-12-31 23:59:59,而 timestamp 的表示范围是从 1970-01-01 00:00:012038-01-19 03:14:07

  3. 默认值不同:MySQL 中,如果定义了 datetime 字段,并且没有给出默认值,那么默认值为 '0000-00-00 00:00:00';而如果定义了 timestamp 字段,且没有给出默认值,那么默认值为当前时间戳。

  4. 存储精度不同:由于存储方式不同,datetime 缺省情况下不存储毫秒,而 timestamp 存储毫秒。

3. datetime 和 timestamp 的选择

考虑到存储空间、精度以及默认值等方面的因素,一般情况下可以根据以下建议来选择使用:

  • 如果对于存储空间非常敏感,那么可以选择 datetime 类型。

  • 如果需要存储的时间范围比较宽,或者需要支持当前时间戳,那么可以使用 timestamp 类型。

  • 如果需要进行日期和时间计算,那么 datetime 类型会更加方便。

示例1:使用 datetime 类型

CREATE TABLE `example` (
  `id` int(11) NOT NULL,
  `create_time` datetime NOT NULL
)

INSERT INTO `example`(`id`, `create_time`) VALUES (1, '2021-09-19 12:00:00')

示例2:使用 timestamp 类型

CREATE TABLE `example` (
  `id` int(11) NOT NULL,
  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP
)

INSERT INTO `example`(`id`) VALUES (1)

SELECT * FROM `example`1
-- 输出结果:1   2021-09-19 15:07:38

以上就是关于 “MySQL 中 datetime 和 timestamp 的区别与选择” 的攻略。希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 中 datetime 和 timestamp 的区别与选择 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • mysql多个left join连接查询用法分析

    MySQL多个LEFT JOIN连接查询用法分析 在MySQL中,多个LEFT JOIN连接查询是非常常见的操作,它可以将多张表的数据进行关联,使得查询结果更加详细。本文将详细讲解MySQL多个LEFT JOIN连接查询的用法及示例操作。 什么是多个LEFT JOIN连接查询 多个LEFT JOIN连接查询是指在一个SQL语句中,使用LEFT JOIN关键字…

    database 2023年5月22日
    00
  • Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态

    使用mysqladmin extended-status命令可以查看MySQL服务器的状态信息,如正在运行的线程数、连接数、查询数等等。同时,结合一些Linux命令,可以更加方便地查看MySQL的状态信息。下面是具体的步骤: 步骤一:登录MySQL并启用extended-status 登录MySQL数据库,执行如下命令: mysql -uroot -p 然后…

    database 2023年5月22日
    00
  • mybatis-generator如何自定义注释生成

    自定义注释可以让生成的代码更加规范化和具有可读性,MyBatis Generator提供了多个配置选项来实现自定义注释。下面详细讲解如何自定义注释生成的完整攻略: 1. 在generatorConfig.xml配置文件中添加注释生成配置 在generatorConfig.xml文件中,可以通过添加count和commentGenerator两个节点来实现注释…

    database 2023年5月21日
    00
  • Apache 解决80端口占用问题

    当我们在使用Apache搭建网站时,常常会遇到80端口占用问题,这时我们只需要通过以下步骤解决: 简介 Apache是一款常见的HTTP服务器软件,它默认监听80端口来提供HTTP服务。但是,在Windows系统下,因为其他应用程序已经占用了80端口,或者我们自己已经使用80端口,这时我们需要对Apache进行一些设置,使其监听其他端口提供HTTP服务。 解…

    database 2023年5月22日
    00
  • thinkphp+redis实现秒杀功能

    1,安装redis,根据自己的php版本安装对应的redis扩展(此步骤简单的描述一下)   1.1,安装 php_igbinary.dll,php_redis.dll扩展此处需要注意你的php版本如图:      1.2,php.ini文件新增 extension=php_igbinary.dll;extension=php_redis.dll两处扩展 o…

    Redis 2023年4月12日
    00
  • mysql-8.0.19-winx64 安装

    一、首先需要到官方mysql中下载最新版mysql          解压到指定目录如:D:\WinInstall\mysql-8.0.19-winx64 这时候你需要在根目录下创建两个文件,分别是data文件夹和my.ini文件,然后使用编辑器编辑my.ini文件,并在其中添加   mysqld] # 设置3306端口 port=3306 # 设置mysq…

    MySQL 2023年4月12日
    00
  • SQL Server的基本功能性语句介绍

    接下来我将详细讲解SQL Server的基本功能性语句,包括DDL、DML及DQL。 DDL(Data Definition Language) 数据定义语言(DDL)用于创建、修改和删除数据库对象,如表、视图、存储过程以及用户定义的函数等。DDL是对数据库结构进行的操作,常见的语句有: CREATE 用于创建数据库对象,如创建表等。示例: CREATE T…

    database 2023年5月21日
    00
  • SQL语句检测sp4补丁是否安装

    要检测SQL Server是否安装了sp4补丁,可以通过以下步骤: 1.打开SQL Server Management Studio。 2.连接需要检测的SQL Server实例。 3.在顶部菜单栏中选择“新建查询”。 4.在查询窗口中输入以下SQL语句: SELECT SERVERPROPERTY(‘ProductVersion’) 5.执行上述SQL语句…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部