恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
MySQL系列之数据类型(DateTime)
首页
资讯中心
/
MySQL系列之数据类型(DateTime)
MySQL系列之数据类型(DateTime)
发布时间:2026/8/29 0:38:31
导览* 前言* 一、日期/时间类型* * 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系列之索引入门下* *