Mysql中有关Datetime和Timestamp的使用总结

yizhihongxing

Mysql中有关Datetime和Timestamp的使用总结

Datetime和Timestamp的概述

DateTime和Timestamp是Mysql中常用的两种日期/时间类型。

  • DateTime存储了日期和时间,可以保存的时间范围为 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'。
  • Timestamp也存储了日期和时间,但只能保存从 '1970-01-01 00:00:01' 到 '2038-01-19 03:14:07' 之间的时间。

Datetime和Timestamp的相同点

  • 都可以保存日期和时间。
  • 存储的时间精确到秒。

Datetime和Timestamp的不同点

  • 存储的时间范围不同。
  • 存储方式不同。
    • DateTime占用8个字节。
    • Timestamp占用4个字节。

Datetime和Timestamp的使用场景

  • 如果需要记录比2038年大的时间,必须使用DateTime。
  • 如果需要记录比1970年小的时间,也必须使用DateTime。
  • 如果需要记录1970年到2038年之间的时间,可以使用Timestamp。
  • 如果只是记录近期时间或用于更新时间戳,建议使用Timestamp。

示例说明

下面给出两个Datetime和Timestamp的实例说明。

示例1

首先创建一个名为test的表。

CREATE TABLE test (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL DEFAULT '',
  create_time DATETIME DEFAULT NULL,
  update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

可以看到表中有两个时间类型的字段,create_time和update_time。

插入一条测试数据。

INSERT INTO test (name) VALUES ('test');

可以看到新增的数据中,create_time和update_time都是null。

SELECT * FROM test;
id name create_time update_time
1 test NULL 2021-06-02 10:56:36

现在再执行一条update语句。

UPDATE test SET name='newtest' WHERE id=1;

执行完之后再次查询,可以看到update_time已经被赋值为当前时间(当前时间是2021-06-02 11:01:56)。

SELECT * FROM test;
id name create_time update_time
1 newtest NULL 2021-06-02 11:01:56

示例2

接着创建一个名为test2的表。

CREATE TABLE test2 (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL DEFAULT '',
  create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

可以看到表中只有一个时间类型的字段create_time。

插入一条测试数据。

INSERT INTO test2 (name) VALUES ('test');

查询数据。

SELECT * FROM test2;

可以看到新增的数据中,create_time已经被赋值为当前时间(当前时间是2021-06-02 11:06:57)。

id name create_time
1 test 2021-06-02 11:06:57

再执行一条update语句。

UPDATE test2 SET name='newtest' WHERE id=1;

查询数据。

SELECT * FROM test2;

可以看到create_time的值没变。

id name create_time
1 newtest 2021-06-02 11:06:57

可以看到,对于Timestamp类型的字段,只有新增时会自动赋值为当前时间,而更新时不会改变它的值,必须手动赋值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql中有关Datetime和Timestamp的使用总结 - Python技术站

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

相关文章

  • oracle中to_date详细用法示例(oracle日期格式转换)

    Oracle中to_date函数的详细用法和示例 在Oracle数据库中,to_date()是一个很常用的日期时间转换函数,可以将各种字符串类型的日期时间转换成日期类型,同时可以格式化日期输出。 函数语法 to_date(string1, [format], [nls_lang]) string1:需要被转换的日期、时间字符串。这个字符串必须符合指定的格式。…

    database 2023年5月21日
    00
  • MySQL基础学习之字符集的应用

    MySQL基础学习之字符集的应用 简介 在MySQL中,字符集(Charset)指的是字符编码集合。MySQL 5.5及以上版本的默认字符集为UTF-8。 字符集在MySQL中至关重要,它关系到数据的存储、排序、比较、连接等一系列操作。如果不了解字符集的特性及其使用方法,可能会在实际操作中遇到很多问题。 本攻略将详细讲解MySQL中字符集的基础知识和应用。 …

    database 2023年5月22日
    00
  • springboot 如何使用jedis连接Redis数据库

    好的。使用SpringBoot连接Redis数据库,需要以下步骤: 安装Redis 首先需要在本地或服务器上安装Redis。可以到Redis官网下载对应的安装包,也可以通过包管理软件(如yum、apt-get等)进行安装。在Windows系统上,可以下载Redis的msi安装包并进行安装。 引入依赖 在使用SpringBoot连接Redis数据库时,需要引入…

    database 2023年5月21日
    00
  • SpringDataJpa创建联合索引的实现

    Spring Data JPA创建联合索引的实现 在Spring Data JPA中,创建联合索引可以提高数据查询的效率和准确性。下面我们将详细讲解如何在Spring Data JPA中创建联合索引。 什么是联合索引? 联合索引,也称为复合索引或多列索引,是一种将多个列组成一个索引的数据结构。通过联合索引,可以有效地提高查询的效率。 Spring Data …

    database 2023年5月22日
    00
  • Windows下MySQL服务无法停止和删除的解决办法

    下面是“Windows下MySQL服务无法停止和删除的解决办法”的完整攻略: 问题描述 在 Windows 系统下,有时候 MySQL 服务会出现不能正常停止和删除的情况。在 Windows 服务管理器中手动停止 MySQL 服务时,服务状态会显示 “停止中”,但是就一直不会停止。同样的,删除 MySQL 服务也会卡在 “正在删除” 的状态。 原因分析 在 …

    database 2023年5月22日
    00
  • Linux系统下virtuoso数据库安装与使用详解

    Linux系统下virtuoso数据库安装与使用详解 背景 Virtuoso是一种适用于RDF关系数据和文档的基于开放标准的面向无限量数据积累的数据服务和处理引擎。在特定的场景下,Virtuoso更是一款非常好用的数据库系统。本文将详细介绍在Linux系统下安装和使用Virtuoso数据库的全部过程,包括Virtuoso的安装和配置以及基本的使用方法。 安装…

    database 2023年5月22日
    00
  • MySQL实例讲解子查询的使用

    MySQL实例讲解子查询的使用 什么是子查询? 子查询是指出现在其他 SQL 语句内部的 SELECT 语句,也叫内层查询。一般来说,子查询是指嵌套在其他 SQL 语句内部的 SELECT 语句。子查询可以作为查询条件的一部分或每行的计算的一部分。 子查询的语法 子查询所在的 SELECT 语句可以是 SELECT、UPDATE、DELETE 或 INSER…

    database 2023年5月22日
    00
  • mysql执行时间为负数的原因分析

    以下是详细讲解“mysql执行时间为负数的原因分析”的完整攻略: 什么是mysql执行时间? 在MySQL中,执行时间指的是查询或者其他数据库操作所花费的时间。MySQL会记录每个执行操作所花费的时间,并在查询日志中输出。 什么情况下mysql执行时间会为负数? 在一些情况下,MySQL的执行时间可能会显示为负数,这种情况往往会造成困扰。但实际上,这些负数时…

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