MySQL系列之数据类型(DateTime)

devtools/2025/2/7 23:42:21/
导览
  • 前言
  • 一、日期/时间类型
    • 1. Date
      • 1.1 取值范围
      • 1.2 显示格式
    • 2. Datetime
      • 2.1 取值范围
      • 2.2 显示格式
    • 3. Timestamp
      • 3.1 取值范围
      • 3.2 显示格式
    • 4. time
      • 4.1 取值范围
      • 4.2 显示格式
    • 5. year
      • 5.1 取值范围
      • 5.2 显示格式
  • 二、自动填充机制
    • 1. 原理介绍
    • 2. 实现方式
      • 2.1 案例1
      • 2.2 案例2
      • 2.3 案例3
      • 2.4 案例4
      • 2.5 案例5
  • 结语
  • 精彩回放

前言

在上期文章中,博主介绍了MySQL的数据类型Numeric,今天我们继续探索第二种数据类型: 日期或时间。
在这里插入图片描述

一、日期/时间类型

MySQL时间类型包括Date、Datetime、Timestamp、time、year。

1. Date

日期(不含时分秒

1.1 取值范围

1000-01-01 ~ 9999-12-31

1.2 显示格式

YYYY-MM-DD

2. Datetime

日期(含时分秒

2.1 取值范围

1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999

2.2 显示格式

YYYY-MM-DD hh:mm:ss[.小数位]

提示:小数位长度6,取值0-6。

3. Timestamp

时间戳

3.1 取值范围

‘1970-01-01 00:00:01.000000’ UTC~‘2038-01-19 03:14:07.499999’ UTC.

提示:Timestamp值存储为自’1970-01-01 00:00:00’UTC以来的秒数。Timestamp不能表示值“1970-01-01 00:00:00”,因为这相当于从1970-01-01 00:00:00算起的0秒。如果表示0值,可输入“0000-00-00 00:00:00“。

3.2 显示格式

YYYY-MM-DD hh:mm:ss[.小数位]

提示:小数位长度6,取值0-6。

4. time

时间

4.1 取值范围

-838:59:59.000000~838:59:59.000000

4.2 显示格式

hh:mm:ss[.小数位]

提示:小数位长度6,取值0-6。

5. year

年份

5.1 取值范围

1901~2155或0000

5.2 显示格式

YYYY

二、自动填充机制

1. 原理介绍

MySQL支持对TimestampDatetime类型的字段进行自动填充(默认为当前数据库服务器时间)。那么该如何实现呢?且看下文。

对于表中的任何TimestampDatetime列,你可以将“当前时间(戳)”指定为默认值或者自动更新,对于未指定列值的行,将自动初始化为当前时间(戳)

当行中任何其他列的值发生变化时,自动更新的(时间(戳))列会更新为当前时间(戳),否则自动更新的列将保持不变。要防止自动更新的列在其他列更改时立即更新,请将其显式设置为当前值。自动更新的列发生变化时,即使行中的其他列没有更改,也要将其显式设置为它应该具有的值(需设置为CURRENT_TIMESTAMP)。

2. 实现方式

要实现自动更改,需在列定义中使用DEFAULT CURRENT_TIMESTAMP默认当前)和ON UPDATE CURRENT_TIMESTAMP更新时)子句。
默认当前时间戳和更新时当前时间戳的使用特定于时间戳和日期时间。DEFAULT子句也可用于指定常量(非自动)默认值(例如,DEFAULT 0或DEFAULT’2000-01-01 00:00:00’)。

2.1 案例1

默认为当前时间戳,也会自动更新为最新时间戳。

CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
2.2 案例2

默认为当前时间戳,不会自动更新为最新时间戳。

CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,dt DATETIME DEFAULT CURRENT_TIMESTAMP
);
2.3 案例3

默认为一个常量,不会自动更新为最新时间戳。

CREATE TABLE t1 (ts TIMESTAMP DEFAULT 0,dt DATETIME DEFAULT 0
);
2.4 案例4

默认为一个常量,会自动更新为最新时间戳。

CREATE TABLE t1 (ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,dt DATETIME DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
);
2.5 案例5

设置默认值,会自动更新为最新时间戳。如Timestamp类型的字段未设置默认值,默认为0,否则以设置为准。

CREATE TABLE t1 (ts1 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,     -- default 0ts2 TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP -- default NULL
);

同样,除非使用NOT NULL定义,否则Datetime的默认值为0:

CREATE TABLE t1 (dt1 DATETIME ON UPDATE CURRENT_TIMESTAMP,         -- default NULLdt2 DATETIME NOT NULL ON UPDATE CURRENT_TIMESTAMP -- default 0
);

结语

本文对MySQL中的日期/时间类型进行重点说明和介绍,有助于我们在建库建表时,应选择何种类型提供依据或建议。

走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~


精彩回放


MySQL系列之数据类型(Numeric)
MySQL系列之远程管理(安全)
MySQL系列之身份鉴别(安全)
MySQL系列之数据授权(安全)
MySQL系列之如何在Linux只安装客户端
MySQL系列之如何正确的使用窗口函数(基于8.0版本)
MySQL系列之数据导入导出
MySQL系列之索引入门(上)
MySQL系列之索引入门(下)


在这里插入图片描述


http://www.ppmy.cn/devtools/156960.html

相关文章

PHP-三目运算(练习1)

[题目信息]: 题目名称题目难度PHP-三目运算(练习1)2 [题目考点]: PHP三目运算[Flag格式]: SangFor{Php_speciALHHH}[环境部署]: docker-compose.yml文件或者docker tar原始文件。 http://分配ip:2028[题目writeup]: 1、实验…

设计模式 ->模板方法模式(Template Method Pattern)

模板方法模式 模板方法模式是一种行为设计模式,它在一个方法中定义一个操作的算法骨架,而将一些步骤延迟到子类中实现。它允许子类在不改变算法结构的情况下重新定义算法中的某些步骤 特点 算法骨架: 在基类中定义算法的框架延迟实现&…

C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…

网络安全—DDoS攻防

背景简述:DDoS攻击分为很多类型,有消耗网络带宽的流量攻击,有消耗服务器资源的应用层攻击等。影响巨大,且让无论大公司还是小公司都肃然“起敬”的当属:流量攻击。在流量越来越廉价的今天,攻击流量小则几百…

JavaScript前后端交互-AJAX/fetch

摘自千峰教育kerwin的js教程 AJAX 1、AJAX 的优势 不需要插件的支持,原生 js 就可以使用用户体验好(不需要刷新页面就可以更新数据)减轻服务端和带宽的负担缺点: 搜索引擎的支持度不够,因为数据都不在页面上&#xf…

【hot100】刷题记录(8)-矩阵置零

题目描述: 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2…

国产之光DeepSeek架构理解与应用分析

目录 初步探索DeepSeek的设计 一、核心架构设计 二、核心原理与优化 三、关键创新点 四、典型应用场景 五、与同类模型的对比优势 六、未来演进方向 从投入行业生产的角度看 一、DeepSeek的核心功能扩展 二、机械电子工程产业中的具体案例 1. 预测性维护(Predictive…

基于Java(SpringBoot)+MySQL+Vue实现的平行志愿录取系统

基于spring bootvue实现的平行志愿录取系统 1.项目简介 这两天干上高考出成绩,有不少亲戚家的孩子今年高考,和我询问关于报志愿的问题。老家河北今年是采用所谓的平行志愿。我看了很多的资料才明白什么叫所谓的“平行志愿”。 整个流程好像很是复杂。…