首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql的存储时间的类型

MySQL中存储时间的类型主要有以下几种:

1. DATETIME

  • 基础概念:DATETIME类型用于存储日期和时间信息,格式为'YYYY-MM-DD HH:MM:SS',范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
  • 优势:支持日期和时间的存储,范围广,精度高。
  • 应用场景:适用于需要精确到秒的日期时间记录,如订单创建时间、用户登录时间等。

2. TIMESTAMP

  • 基础概念:TIMESTAMP类型也用于存储日期和时间信息,格式同样为'YYYY-MM-DD HH:MM:SS',但范围较小,从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。
  • 优势:自动初始化和更新当前时间戳,节省存储空间。
  • 应用场景:适用于需要自动记录创建时间和更新时间的场景。

3. DATE

  • 基础概念:DATE类型仅用于存储日期信息,格式为'YYYY-MM-DD',范围从'1000-01-01'到'9999-12-31'。
  • 优势:仅存储日期信息,节省存储空间。
  • 应用场景:适用于只需要记录日期的场景,如生日、节假日等。

4. TIME

  • 基础概念:TIME类型用于存储时间信息,格式为'HH:MM:SS',范围从'-838:59:59'到'838:59:59'。
  • 优势:仅存储时间信息,适用于需要精确到秒的时间记录。
  • 应用场景:适用于记录事件发生的具体时间,如会议开始时间、课程结束时间等。

5. YEAR

  • 基础概念:YEAR类型用于存储年份信息,格式为'YYYY',范围从1901到2155。
  • 优势:仅存储年份信息,节省存储空间。
  • 应用场景:适用于只需要记录年份的场景,如出生年份、成立年份等。

常见问题及解决方法

问题1:为什么使用TIMESTAMP时,时间总是自动更新?

  • 原因:TIMESTAMP类型默认设置为自动更新当前时间戳。
  • 解决方法:可以通过设置ON UPDATE CURRENT_TIMESTAMP来控制是否自动更新。例如:
  • 解决方法:可以通过设置ON UPDATE CURRENT_TIMESTAMP来控制是否自动更新。例如:

问题2:如何处理DATETIME和TIMESTAMP的时间范围问题?

  • 原因:DATETIME和TIMESTAMP的时间范围不同,TIMESTAMP的范围较小。
  • 解决方法:根据实际需求选择合适的类型。如果需要更广泛的时间范围,可以选择DATETIME;如果需要自动更新时间戳且范围在1970-2038之间,可以选择TIMESTAMP。

问题3:如何存储不同时区的日期时间?

  • 原因:MySQL默认存储的是UTC时间,需要转换为本地时间。
  • 解决方法:可以使用CONVERT_TZ()函数进行时区转换。例如:
  • 解决方法:可以使用CONVERT_TZ()函数进行时区转换。例如:

参考链接

希望这些信息对你有所帮助!如果有更多问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL时间类型

时间是一类重要数据,MySQL中有多种关于时间类型可以选择。...时间类型MySQL时间类型有三大类:日期(Date)、时间(Time)和年(Year)。...;特殊类型:YEAR;MySQL 8.0不支持两位YEAR类型;小数秒精度可选值是0-6,默认是0,3代表毫秒,6代表微秒,而2代表10毫秒(如0.11就是110毫秒);存储TIMESTAMP值时会将时间从当前时区转换成...小数秒部分存储如下:fsp 存储 0 0字节1, 21字节3, 42字节5, 63字节2. 常见用法了解了五种类型基本信息之后,这部分重点介绍一下MySQL中关于时间类型一些常见用法。...时间类型实践接下来我们从实践角度,看看时间类型使用。3.1 时间类型选择MySQL五种时间类型,在我们应用中该如何选择呢?

10.5K52
  • MySQL日期时间类型

    日期时间类型中包含以下几种数据类型: DATE TIME DATETIME TIMESTAMP YEAR 各类型都有具体取值范围,超出或非法其他值时,MySQL 会回退到 0。...通过设置 MySQL 相关参数,日期类型可保存原本非法值,比如开启 ALLOW_INVALID_DATES 设置项时,可设置日期类型保存一个 2009-11-31 值,但正常情况下我们知道 11 月哪来什么...既然如此,为何要使用这个取值范围更小呢。TIMESTAMP 存储值是带时区。...在存储时会根据当前时区转成 UTC(universal time zone) 存储,查询时也会根据时区从 UTC 转换到具体时间。对于支持多语及国际化全球部署应用来说,显得尤为方便。...如果这这个日期列设置 10:45:15 则会认为是非法值,因为 45 不是一个合法月份值,所以存储时变成零值 0000-00-00。 日期时间与毫秒分界符必需是小数点。

    6.8K20

    mysql 字段时间类型比较

    字段时间类型分为: ,,,,; 下面就分别介绍这几种时间类型区别 每个时间类型都有一个有效范围和一个零值,当指定类型值超过有效范围时,就会使用零值 YEAR 该类型表示年,格式为 有三种表示方法...:分:秒,尽管时间范围为0~23,但是为了表示某些特殊时间,mysql将小时范围扩大了,并且支持负值。....我们可以通过获取当前值 DATE 该类型表示年-月-日,标准格式为,但是中还支持一些不严谨格式:比如等其他符号来分割 在插入数据数据也可以使用 年份转换和上面的类型规则一样 可以使用...函数获取当前值 DATETIME 该类型表示YYYY-MM-DD hh:mm:ss,可以看出和类型结合体.所以赋值规则时和上面和时一样 TIMESTAMP 该类型表示为YYYY-MM DD hh...哈哈,到年后就别用这个类型了 这只是一个简单区分说明,具体时间类型说明 请参考 官方文档 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html

    4.6K80

    Mysql 时间类型精度截取bug

    mysql-connector-java版本升级出现一次问题。涉及到了时间精度截取和四舍五入。 首先了解一点,timestamp,datetime如果不指定精度,默认精度是秒。...当mysql-connector-java版本<=5.1.22时,db客户端会将Datetime,Timestamp秒以下精度丢弃。...server端会对超出精度位数数据进行四舍五入,即插入db里是'2018-04-03 00:00:00 ' 所以说mysql-connector-java版本升级就带了时间与原本不一致问题,结合具体业务逻辑上使用...可以看出dbserver端果然会进行四舍五入。 再看一下mysql驱动里是怎么写,是否真的是截断精度了。...Mysql对于时间精度处理在com.mysql.jdbc.PreparedStatement#setTimestampInternal这个方法中 翻一下5.1.21源码看一下: private void

    2.9K20

    mysql 关于时间类型刨坑之路

    由于本人之前一直习惯使用int存储时间戳(问题相对比较少,容易处理),所以对这几个时间字段类型了解不是很多. 后来参考了今天分享这篇文档,终于有了一个基本认识。 ?...需要特别注意是,不管多小数值只要是以DATETIME or TIMESTAMP 类型添加到数据库就会被存储而不是舍弃。...TIMESTAMP 和 DATETIME 类型提供了自动初始化和更新当前日期和时间。...MySQL将 TIMESTAMP 值从当前时区转换成UTC进行存储,并且会从UTC转成当前时区进行检索(这样就不会发生出现别的类型例如DATETIME)。...默认情况下,每个连接的当前时区是服务器时间。在每个基础连接中时区都可以被设置。由于时区设置能保持不变,你也就能拿到你存储数值。

    1.7K30

    MySQL时间类型差异

    文章目录[隐藏] 时间格式化 DATETIME TIMESTAMP DATE TIME YEAR 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD...如果实际应用中有这样需求,就可以使用 DATETIME 类型。 DATETIME列可以设置为多个,默认可为null,可以手动设置其值。 DATETIME列不可设定默认值。...TIMESTAMP 属性受 Mysql 版本和服务器 SQLMode 影响较大。 如果记录日期需要让不同时区的人使用,最好使用 TIMESTAMP。...YEAR YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式年。 默认是4位。如果实际应用只保存年份,那么用 1 bytes 保存 YEAR 类型完全可以。...不但能够节约存储空间,还能提高表操作效率

    2.6K20

    MySQL中数字类型、数值类型时间类型

    2是能存储最小显示长度,如果插入数据不够2位时,需要在数据前面用0补满2位。比如定义一个age字段,其数据类型为int(4),那用select查询出来结果是“0002”。...最大长度为4294967295,如果输入值比最大长度更大,则数据库会自动转为这个最大数进行存储。这个数是232次方-1。int占32位。 2.3 int(2)和int(4)区别?...但是,这两个在硬盘中所占存储空间是一样。 2.4 int(2)和tinyint(2)区别? int占4个字节,tinyint占1个字节,如果存储一个较小数,用tinyint性能更高一点。...tinyint使用范围是0到255整型数据,存储大小为1字节。int使用范围是0到4294967295,存储大小为4个字节。tinyint所占内存小,作用范围也小。...三、日期时间 类型 范围 说明 Date 日期(yyyy-mm-dd) Time 时间(hh:mm:ss) DateTime 日期与时间組合(yyyy-mm-dd hh:mm:

    3.1K20

    mysql】日期与时间类型

    MySQL有多种表示日期和时间数据类型,不同版本可能有所差异,MySQL8.0版本支持日期和时间类型主要有:YEAR类型、TIME类型、DATE类型、DATETIME类型和TIMESTAMP类型。...原因是 MySQL 设计 TIME 类型,不光表示一天之内时间,而且可以用来表示一个时间间隔,这个时间间隔可以超过 24 小时。 1....YEAR类型 YEAR类型用来表示年份,在所有的日期时间类型中所占用存储空间最小,只需要1个字节存储空间。...在MySQL中,需要3个字节存储空间来存储TIME类型数据,可以使用“HH:MM:SS”格式来表示TIME类型,其中,HH表示小时,MM表示分钟,SS表示秒。...DATETIME类型 DATETIME类型在所有的日期时间类型中占用存储空间最大,总共需要8个字节存储空间。

    4.1K20

    mysql varchar类型时间查询

    mysql–varchar类型时间排序和查询某一个时间段信息 背景: 在实际操作中会经常将时间数据以 varchar 类型存入数据库,因为业务要求需要查询最近时间数据,所以需要根据时间排序 排序实例...SELECT * FROM 表名 ORDER BY 时间字段名 DESC; 降序 SELECT * FROM 表名 ORDER BY 时间字段名 ASC; 升序 SELECT * FROM 表名...ORDER BY 时间字段名; 升序 查询介于一个时间段之间信息实例 SELECT 字段名 FROM 表名 WHERE STR_TO_DATE(时间字段名, '%Y-%m-%d...') BETWEEN STR_TO_DATE(起始时间, '%Y-%m-%d') AND STR_TO_DATE(结束时间, '%Y-%m-%d') ORDER BY STR_TO_DATE(时间字段名..., '%Y-%m-%d') DESC; 注意 STR_TO_DATE(str, format)函数是DATE_FORMAT()函数反函数。

    5.1K10

    MySQL类型存储引擎

    # MySQL类型存储引擎 mysql类型存储引擎 基本介绍 主要存储引擎/表类型特点 细节说明 三种存储引擎表使用案例 如何选择表存储引擎 # mysql类型存储引擎 # 基本介绍...# 主要存储引擎/表类型特点 特点 Myism InnoDB Memory Archive 批量插入速度 高 底 高 非常高 事务安全 支持 全文索引 支持 锁机制 表锁 行锁 表锁...MEMORY存储引擎使用存在内存中内容来创建表。每个MEMORY表只实际对应-个磁盘文件。MEMORY类型表访问非常得快,因为它数据是放在内存中,并且默认使用HASH索引。...但是一旦MySQL服务关闭,表中数据就会丢失掉,表结构还在。...-- 1.数据存储在内存中[关闭mysql服务,数据丢失,但是表结构还在] -- 2.执行速度很快(没有IO读写) 3.默认支持索引(hash表) CREATE TABLE t29( id INT

    1.7K30

    MySQL日期和时间类型笔记

    最近在看《MySQL技术内幕:SQL编程》并做了笔记,这是一篇笔记类型博客,分享出来方便自己复习,也可以帮助其他人 一、日期时间类型所占空间对比 各种日期时间数据类型所占空间: 类型 所占空间 DATETIME...注意: 更新表时,可以设置TIMESTAMP类型列,自动更新时间为当前时间 列为TIMESTAMP日期类型可以设置一个默认值,而DATETIME不支持 例子,验证一下,设置默认值和自动更新时间...四、YEAR和TIME类型对比 YEAR类型占用1字节,书中介绍定义时可以指定显示宽度为YEAR(2)或者YEAR(4),不过在我mysql版本5.7+验证,发现只能定义为YEAR或者YEAR(4)...,也就是新版是不支持YEAR(2)这种形式 对于YEAR(4),其显示年份范围为1901~2155;然后超过这个范围的话,mysql还可以写,不过被赋值为0000 TIME类型只占3字节,显示范围为...函数 介绍一下MySQL比较常用NOW、CURRENT_TIMESTAMP和SYSDATE函数 给个例子,用sleep函数,然后对比sleep函数执行前后,这几个函数获取时间对比 SELECT NOW

    1.8K10

    MySQL数据类型--日期时间

    一、博客前言   自接触学习MySQL已有一段时间了,对于MySQL基础知识还是有一定了解。...在这一路学习过来,每次不管看书还是网上看资料,对于MySQL数据类型时间日期类型总是一扫而过,不曾停下来认认真真的研究学习。...在我做项目里用到存贮时间数据,我都是采用int整型数据类型存储,即是存储时间戳。但是在后面学习MySQL优化时候,就有一个原则就是存储数据时应采用最小占用空间数据类型。...二、时间日期数据类型总概况    MySQL中有多种表示时间日期数据类型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等。...四、小结   了解MySQL日期时间数据类型对于选取一种适合存储类型是很有必要

    3.3K20

    Oracle中date类型对应 MySQL 时间类型以及空值处理

    因为在做Oracle---->MySQL数据迁移时候,发现Oracle中date类型,对应MySQL时间类型设置不当容易引起错误,特别是存在空值时候 MySQL 版本 5.6.40版本 mysql...----+------+-----+-------------------+-----------------------------+ 5 rows in set (0.00 sec) 可以插入当前时间...,但是依旧可以插入进去,因为date类型只记录年月(yyyy-mm) Query OK, 1 row affected (0.01 sec) 4个时间空值插入测试 ,time类型,插入0 mysql>...类型mysqldate类型是不一样,Oracle为yyyy-mm-dd hh:mi:ss和mysqldatetime类型匹配, 而 mysql 为 yyyy-mm 。...当在存在空值时候,mysqltime 类型可以使用0零来插入,而date,datetime,timestamp可以使用null 来插入,但是timestamp即使为null,也会默认插入当前时间戳。

    3.1K10

    MySQL存储过程_MySQL创建存储过程

    delimiter 指定SQL语句结束符 存储过程中变量 在MySQL中,变量一般可分为分为三种类型: 系统变量、用户定义变量、局部变量; 一、系统变量 系统变量是MySQL服务器系统自身提供...很明显,不够灵活,通常来说,在实际业务中,我们更希望存储过程能够接收参数,并且返回处理结果,以便提供给后续业务逻辑使用,这就需要用到存储过程输入输出参数了; 五、存储过程输入输出参数使用 存储过程中使用到参数类型...循环语句在编程中经常被用到,常用于对批量数据进行循环处理,在mysql存储过程中,也提供了几种常用循环语句,包括:while循环,repeat循环,和loop循环; 1、while循环语句 while...存储函数是有返回值存储过程,存储函数参数只能是IN类型,语法定义如下: CREATE FUNCTION 存储函数名称 ([ 参数列表 ]) RETURNS type [characteristic...,使用存储过程也可以完成,但是存储函数局限在于,函数必须要有返回结果; 八、存储过程中游标的使用 游标(CURSOR)是用来存储查询结果集数据类型 , 在存储过程和函数中可以使用游标对结果集进行循环处理

    22.2K21

    MySQLMySQL存储引擎

    不同存储引擎提供不同存储机制、索引技巧、锁定水平等功能。现在 许多不同数据库管理系统都支持多种不同数据引擎。MySQL核心就是存储引擎。...用户可以 根据不同需求为数据表选择不同存储引擎 可以使用 SHOW ENGINES 命令 可以查看Mysql 所有执行引擎我们 可以到 默认执行引擎是innoDB 支持事务,行级锁定和外键。...拥有较高插入,查询速度,但不支持事 务 InnoDB:事务型速记首选引擎,支持ACID事务,支持行级锁定,MySQL5.5成为默认数据库引 擎 Memory: 所有数据置于内存存储引擎,拥有极高插入...但是会占用和数据 量成正比内存空间。并且其内容会在MYSQL重新启动是会丢失。 Archive :非常适合存储大量独立,作为历史记录数据。因为它们不经常被读取。...关闭mysql服务 2. 找到mysql安装目录下my.ini文件: 3.

    5.3K20
    领券