MySQL系列之数据类型(Date&Time)

MySQL常见日期时间函数总结【建议收藏】 FROM_UNIXTIME(timestamp)函数:是将UNIX时间戳转化为日期时间,与UNIX_TIMESTAMP(date)函数互为反函数。注意:在使用STR_TO_DATE函数时,请确保传入的日期字符串和格式字符串的格式匹配,否则可能会得到错误的结果。DATEDIFF(expr1,expr2)函数:返回expr1−expr2,以从一个日期到另一个日期的天数表示。expr1和expr2是日期或日期和时间表达式;NOW()函数用于返回当前日期和时间,包含年、月、日、时、分、秒!为表示日期格式的字符串。 阅读详情
AI摘要

本文主要介绍了MySQL的日期或时间数据类型,包括Date、Datetime、Timestamp、time、year的取值范围和显示格式。还阐述了自动填充机制的原理,以及通过不同案例展示了实现自动更改的方式,为建库建表时选择合适类型提供依据。

导览

  • 前言
  • 一、日期/时间类型
    • 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支持对Timestamp和Datetime类型的字段进行自动填充(默认为当前数据库服务器时间)。那么该如何实现呢?且看下文。

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

当行中任何其他列的值发生变化时,自动更新的(时间(戳))列会更新为当前时间(戳),否则自动更新的列将保持不变。要防止自动更新的列在其他列更改时立即更新,请将其显式设置为当前值。自动更新的列发生变化时,即使行中的其他列没有更改,也要将其显式设置为它应该具有的值(需设置为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 0
  ts2 TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP -- default NULL
);

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

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

结语

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

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


精彩回放


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


在这里插入图片描述

MySQL 中datatime 与 timestamp区别 阅读详情

相关推荐

【DICOM后处理】qt+vs 实现DICOM数据四视图显示

方法用于 设置 2D 视图的“向上”方向,即定义图像在屏幕坐标系中的朝向。该方法直接影响影像的显示方向,尤其在多平面重建(MPR)或非标准切面显示时至关重要。:方法用于 设置渲染窗口在屏幕上的显示位置(以像素为单位)。它控制的是 VTK 渲染窗口的左上角在屏幕坐标系中的坐标位置。DICOM四视图通常指同时显示医学影像的四个不同平面或视角,用于全面分析三维数据(如CT、MRI等)。:基于 标量值 设置不透明度(控制不同组织的显示),显示骨骼or显示高密度流体等。默认朝向原点 (0, 0, 0)

weixin_41804847的博客 1325

mysql time类型数据_MySQL数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的;MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型;整数类型Int(N)中N的涵义定义了 init(5)zerofill 当和int(10)join时显示宽度对不上有可能出现临时表N表示显示宽度为N,但仍占4字节存储,存储范围不变;>create table int_test(a int zerofill...

weixin_35044481的博客 7000

基于Landsat-8数据的山西省吕梁市地表温度反演研究过程(大气校正法)

1.数据下载:本实验采用的数据是 ①从地理空间数据云下载的来自landsat8 卫星,云量<=1%,时间为2017年5月12日的山西省吕梁市影像数据。为全面覆盖吕梁市,选用了两片影像。 ②吕梁市边界矢量图 2.数据预处理 ...

weixin_45747376的博客 6601

mysql的日期时间类型及精度问题/time、date、datetime、timestamp和year

二、 mysql中的日期时间类型 2.1、详细解释 2.2、占用字节 2.3、time类型 三、datetime和timestamp区别 3.1、相同点 3.2、不同点 四、mysql日期类型中的坑 4.1、 time、timestamp、datetime数据类型四舍五入 五、其他疑问问题 5.1、date类型可以存时分秒么?可以存储不存在的日期么?

weixin_49114503的博客 2万+

proteus仿真51单片机操作指南:串口通信仿真配置详解

深入讲解如何在proteus仿真51单片机中实现串口通信,涵盖虚拟串口设置、电路连接与调试技巧,帮助开发者高效完成通信仿真验证。

weixin_36197669的博客 570

对LSTM中每个batch都初始化隐含层的理解

不知道有没有人和我有一样疑惑 在LSTM相关的代码中,为什么每个batch都会将隐藏层重新初始化, 这样不会把以前训练出来的参数丢掉吗?? 比如 代码来自GitHub 看了一些解释是h与c是状态,不是参数,每个batch中都需要初始化为0,LSTM 中的参数是W,b。 网络中训练的是参数,不是状态。 说真的。。。当时我没怎么看懂。。。 咨询了实验室的师兄后,我有了自己的理解 产生误解的主要原因是我对RNN和LSTM的结构理解不深入,我们通常看到RNN结构图基本都是这样的 ...

Chauncey_Wang的博客 5910

mysql 之date 相关函数

表:time_is_presupposed 字段:id、time1、time2 1、date() 函数 语法:date(date) 说明:date()函数提取日期或日期/时间表达式的日期部分。 SELECT id,date(time1) FROM `time_is_presupposed`; 2、DATE_SUB() 函数 语法:DATE_SUB(date,INTERVAL expr unit) 说明:DATE_SUB() 函数从日期减去指定的时间间隔。 date 参数是合法的日

weixin_40482816的博客 1万+

深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总

本文简要介绍深度学习的前向传播与反向传播,以及前馈神经网络与反馈神经网络。

haopinglianlian的博客 3042

mysql数据库内DATE and TIME系列数据类型介绍

date:        表示日期。    格式:yyyy-mm-dd。     范围:“1000-01-01”到“9999-12-31” 。      占用空间:3字节。    使用时机:用于存储没有时间的日期。 datetime:        表示日期。    格式:yyyy-mm-dd hh:mm:ss。     范围:“1000-00-00”到“9999-12-31” 。     ...

pyp_demon的博客 1214

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛应用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5951

EndNote X9 参考文献附录列表 格式调整

EndNote X9 插入参考文献常见问题总结

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2569

MySQL学习总结1

1.storage engine 其实每个engine对应的性质,就不一一说明了。 下面主要罗列一些最明显的使用场合。 ①payment、secure     ----InnoDB ②foreign key referential integrity constraint     ----InnoDB ③full-text search          ----MyISAM

山鸡哥的专栏 675

61、神经科学中的分岔与双分子反应研究

本文探讨了神经科学中的分岔现象与双分子反应建模。在神经元网络中,通过分析四细胞网络的呼吸节律振荡,揭示了分岔对振荡频率和占空比的影响,并区分了单神经元与网络层面的分岔特性。在神经群体模型中,系统参数变化引发的分岔可导致振荡、混沌等动态行为转变,文中详细介绍了局部分岔、全局分岔和高余维分岔的机制,并以Jansen-Rit模型为例展示了输入水平变化下的分岔过程。在分子层面,重点介绍了MWC模型在描述配体与多位点蛋白质结合中的应用,涵盖其构象状态、平衡常数及统计因子。研究表明,分岔理论和双分子反应建模为理解神经系

yog99的博客 80

MySQL数据库中的Date,DateTime和TimeStamp类型详解

DATETIME, DATE和TIMESTAMP类型是相关的。本文描述他们的特征,他们是如何类似的而又不同的。 DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”意味着尽管更早...

weixin_30799995的博客 104

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

testtest

testtest morris.hea Condition Name[href1] Question[href4] Date&amp;Time[href2] Network[href3] Storage[href5] User[href6] -1[ques] ~ ~ # # # # -2[stor] ~ ~ ~ ~ ~ # -1 &am...

xfuqq的博客 142

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: MySQL系列之数据类型(Numeric)
下一篇: MySQL系列之数据类型(String)
一叶飞舟
一叶飞舟 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄16年 6566粉丝 140原创
评论 72
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值