枚举列可以把一些不重复的字符串存储成一个预定义的集合。MySQL在存储枚举时非常紧凑,会根据列表值的数量压缩到一个或两个字节中。...MySQL在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存"数字-字符串"映射关系的"查找表"。 2、枚举字段是按照内部存储的整数而不是定义的字符串进行排序的。...日期和时间类型 MySQL可以使用许多类型来保存日期和时间值,例如YEAR和DATE。MySQL能存储的最小时间粒度为秒(MariaDB支持微妙级别的时间类型)。...DATETIME 1、这个类型能保存大范围的值,从1001年到9999年,精确度为秒。 2、它把日期和时间装到格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。...3、MySQL提供了FROM_UNIXTIME()函数把UNIX时间戳转换为日期,提供了UNIX_TIMESTAMP()函数把日期转换为Unix时间戳。
在MySQL中,日期和时间数据类型用于存储日期、时间或日期时间值。日期和时间数据类型在查询和排序数据时非常有用,并且可以进行各种日期和时间计算。...MySQL支持多种日期和时间数据类型,包括DATE、TIME、DATETIME、TIMESTAMP和YEAR。DATE类型DATE类型用于存储日期值,如年、月、日。...DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP属性将默认值设置为当前时间,并在更新行时自动更新时间戳。...YEAR类型YEAR类型用于存储年份值,它只使用1个字节来存储,并且可以存储范围为'1901'到'2155'之间的值。...WHERE子句使用YEAR函数选择出生日期为1990年的记录。
这里有两个例子:一个是应该使用 MySQL 内建的类型(date, time, datatime)而不是字符串来存储日期和时间,另一个是应该用无符号整型存储 IP 地址。 尽量避免NULL。...枚举(enum)类型 MySQL 在内部会将每个值在列表中的位置保存为整数,并且在表的 .frm 文件中保存 “数字-字符串” 映射关系的 “查找表”。...枚举字段是按照内部存储的整数而不是定义的字符串进行排序的。 日期和时间类型: MySQL 能存储的最小时间粒度为秒。 datetime 保存范围从 1001 年到 9999 年,精度为秒。与时区无关。...有时候人们会将 unix 时间戳存储为整数值,但这不会带来任何收益。用整数保存时间戳的格式通常不方便处理,所以我们不推荐这么做。...(对于这点很多公司项目中是用整数存储,我也查了资料,使用整数的理由一般是日期比较,计算时整数更好处理)
1.切记不要用字符串存储日期 我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手。...但是,这是不正确的做法,主要会有下面两个问题: 字符串占用的空间更大! 字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API 进行计算和比较。...2.Datetime 和 Timestamp 之间抉择 Datetime 和 Timestamp 是 MySQL 提供的两种比较相似的保存时间的数据类型。他们两者究竟该如何选择呢?...为了方便,本文我们还是默认 Timestamp 只需要使用 4 个字节的存储空间,但是 DateTime 需要耗费 8 个字节的存储空间。 4.数值型时间戳是更好的选择吗?...时间戳的定义如下: “时间戳的定义是从一个基准时间开始算起,这个基准时间是「1970-1-1 00:00:00 +0:00」,从这个时间开始,用整数表示,以秒计时,随着时间的流逝这个时间整数不断增加。
日期和时间类型 在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。...需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。...MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译。因为所有 TEAR 类型的值必须用 4 个数字存储。...DATEYIME 和 TIMESTAMP 类型 除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型。它们可以把日期和时间作为单个的值进行存储。...这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。
三.日期和时间类型 在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。...需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。...MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译。因为所有 TEAR 类型的值必须用 4 个数字存储。...DATEYIME 和 TIMESTAMP 类型 除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型。它们可以把日期和时间作为单个的值进行存储。...这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。
系统自动根据存储的数据分配存储空间,每9个数会分配4个字节进行存储,同时小数和整数部分分开 decimal(M,D) M(<=65)表示总长度,D(<=30)表示小数部分长度 # 举例1:decimal...-12-12 23:59:59 可为0值 0000-00-00 00:00:00 timestamp 时间戳表示从格林威治时间开始,但格式依然为"YYYY-mm-dd HH:ii:ss" year...,*24)代替时间,例如:'5 12:12:12' => '132:12:12' PHP中有强大的时间日期转换函数:date将时间戳转换成各种格式,strtotime将很多格式转换成时间戳,PHP通常不需要数据库来处理复杂的时间日期...,不用刻意选择text类型,系统会自动根据存储的数据长度选择合适的文本类型 在选择字符存储时,如果数据超过255字符,一定选择text存储 mysql记录长度 mysql中规定记录长度 (record...提供了多个字节进行保存,系统自动选择具体的存储单元 1字节 => 8个选项 2字节 => 16个选项 3字节 => 24个选项 8字节 => 64个选项 [sign.jpg]
数据类型整型类型合理选择bit、int、tinyint、decimal等数字类型int使用固定4个字节存储,int(11)与int(4)只是显示宽度的区别建议使用UNSIGNED存储非负整数,可存储更大的数字字段类型存储空间取值范围...这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。MySQL以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展。当从数据库检索一个值时,可以把这个值加长到指定的长度。...需要注意的是,没有冒号分隔符的TIME类型值,将会被MySQL理解为持续的时间,而不是时间戳。MySQL还对日期的年份中的两个数字的值,或是SQL语句中为YEAR类型输入的两个数字进行最大限度的通译。...DATETIME和TIMESTAMP类型除了日期和时间数据类型,MySQL还支持DATETIME和TIMESTAMP这两种混合类型。它们可以把日期和时间作为单个的值进行存储。...这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。
时间类型 在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。...DATE、TIME 和 YEAR 类型 MySQL 用 DATE 和 YEAR 类型存储简单的日期值,使用 TIME 类型存储时间值。这些类型可以描述为字符串或不带分隔符的整数序列。...需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。...MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 YEAR 类型输入的两个数字进行最大限度的通译。因为所有 YEAR 类型的值必须用 4 个数字存储。...选择相对简单的数据类型 数字类型相对字符串类型要简单的多,尤其是在比较运算时,所以我们应该选择最简单的数据类型,比如说在保存时间时,因为PHP可以良好的处理LINUX时间戳所以我们可以将日期存为int(
这里有两个例子:一个是应该使用MySQL内建的类型(2)而不是字符串来存储日期和时间,另外一个是应该用整型存储IP地址。稍后我们将专门讨论这个话题。...除非能接受只在列表末尾添加元素,否则使用枚举不是个好主意。 1.4 日期和时间类型 MySQL可以使用许多类型来保存日期和时间值,例如YEAR 和 DATE。...MySQL能存储的最小时间粒度为秒(MariaDB支持微秒级别的时间类型)。但是MySQL也可以使用微秒级的粒度进行临时运算,我们会展示怎么绕开这种存储限制。...DATETIME 这个类型能保存大范围的值,从1001年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。...这里有两个例子: 低于秒级精度的时间戳 前面也介绍了,建议使用 BIGINT 类型存储时间戳。 IPv4 地址 人们经常使用VARCHAR(15)列来存储IP地址。
本文将详细介绍MySQL中的数据类型,包括数值类型、日期和时间类型、字符串类型等,并通过Markdown格式的表格进行展示。 数值类型 数值类型用于存储数值数据,包括整数类型和浮点数类型。...-128到127之间的整数,tiny_unsigned列可以存储0到255之间的整数。...关于FLOAT、DOUBLE和DECIMAL的更多信息,可以访问MySQL官方文档进行深入了解。 日期和时间类型 日期和时间类型用于存储日期和时间数据。MySQL提供了五种日期和时间类型。...event_datetime字段使用DATETIME类型,用于存储事件的日期和时间。 event_timestamp字段使用TIMESTAMP类型,并可以自动初始化为当前时间戳。...对于TEXT和更大的文本类型,通常建议仅对前缀进行索引,而不是对整个字段进行索引。 字符集和排序规则:在选择文本类型时,需要考虑字符集和排序规则的设置。
double 8字节 双精度浮点型 decimal decimal(m,d)如果m>d为m+2否则为d+2 依赖于m和d的值 依赖于m和d的值 小数值(更加精准) 创建表语句 mysql> create...注意: decimal 小数类型 不仅能够保证数据计算更为精确 还可以节省空间 float/double/decimal 在存储的时候 小数点超出了 会四舍五入 数值类型 如int /tinnyint/...smallint 等 在给后面括号值的时候 没有任何的意义的 也就是说不能够去限制当前存储值的长度 除非配合约束条件zerofill 零填充的时候 才有意义 (2) 日期和时间类型 类型 大小(字节)...timestamp 4 1970-01-01 00:00:00/2038 YYYYMMDDHHMMSS 混合日期和时间值 建表语句 mysql> create table if not exists...: 存储日期时 我们可以使用整形类进行存储时间戳 这样做便于我们进行日期的计算 timestamp 值默认不为空 默认值为当前的时间戳 (3) 字符串类型 类型 大小 用途 char 0-255字节
BLOB 和 TEXT 之间仅有的不同是 BLOB 类型存储的是二进制数据, 没有排序规则或字符集, 而 TEXT类型有字符集和排序规则 5.日期和时间类型 大部分时间类型都没有替代品, 因此没有什么是最佳选择的问题...唯一的问题是保存日期和时间的时候需要做什么。 MySQL提供两种相似的日期类型: DATE TIME和 TIMESTAMP。...但是目前我们更建议存储时间戳的方式,因此该处不再对 DATE TIME和 TIMESTAMP做过多说明。...低千秒级精度的时间戳就是一个例子,另一个例子是以个1Pv4地址,人们经常使用VARCHAR(15)列来存储IP地址,然而, 它们实际上是32位无符号整数, 不是字符串。...所以应该用无符号整数存储IP地址。MySQL提供INET_ATON()和INET_NTOA()函数在这两种表示方法之间转换。
一、数字类型: 整型:包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别占用1、2、3、4、8个字节,用于存储整数。可以根据需要选择合适的类型,以节省存储空间。...二、日期和时间类型: DATE:用于存储日期值,格式为YYYY-MM-DD。 TIME:用于存储时间值,格式为HH:MM:SS。...DATETIME:用于存储日期和时间值,格式为YYYY-MM-DD HH:MM:SS。 TIMESTAMP:用于存储时间戳,表示从1970年1月1日00:00:00开始的秒数。...它的值会根据时区进行转换。 YEAR:用于存储年份值,可以使用2位或4位格式。 以下是使用MySQL日期和时间类型进行操作的一些示例: 1....总结:选择合适的数据类型可以提高数据库的性能和效率。在选择数据类型时,应根据数据的实际需求和特点进行选择。 以下是使用MySQL字符串类型进行操作的一些示例: 1.
涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可。 2.日期和时间相关函数 处理日期和时间字段的函数有很多,有的经常会在查询中使用到,下面介绍下几个相关函数的使用方法。...NOW() 和 SYSDATE() 两个函数作用相同,返回当前系统的日期和时间值。 UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数。...DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值。 DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值。...date1 和结束时间 date2 之间的天数 mysql> SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1, -> DATEDIFF('...上面的内容都是为我们的查询需求做准备,在项目需求中,经常会以日期或时间为条件进行筛选查询。
数据库存储时间的类型及对比 1、前言 我们平时在开发中不可避免的要存储时间,比如我们要记录某条数据的创建时间、更新时间等等。数据库中有多种数据类型可以存储时间,那不同数据类型我们要怎么选择?...2.2、日期范围和存储空间: 这个类型能保存大范围的值,从1000年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。...MySQL提供了FROM_UNIXTIME() 函数把 Unix 时间戳转换为日期,并提供了UNIX_TIMESTAMP() 函数把日期转换为 Unix 时间戳。...MySQL服务器、操作系统,以及客户端连接都有时区设置。 3.2、存储空间和日期范围: Timestamp 类型保存了从 1970年1月1日午夜(格林尼治标准时间)以来的秒数,它和UNIX时间戳相同。...语法为:type_name(fsp) ,例如:CREATE TABLE t1 (dt DATETIME(6)); (微秒的精度为6) 其他大佬如何选择存储时间的类型: 在阿里巴巴Java开发手册有如下规定
当插入的数字太大的时候,会出现精度丢失的问题 当我们设定float类型为unsigned时,并不是和int一样把负数的范围加到整数上,mysql在处理小数类型时会直接除去负数那部分范围,保留正数范围。...,单位为字符,最大长度值可以为255 char在mysql中长度指的是字符的长度,不论是字母、数字还是中文。...当你插入一行数据时,如果没有为TIMESTAMP列提供一个值,它将被设置为当前时间戳。这允许你在插入数据时不必显式指定时间戳。...这意味着无论你对行进行多少次更新,TIMESTAMP列的值都将被更新为最新的时间戳。 我们更新一下数据之后能看到,time中的时间也跟着修改了。...例如: 我们查询爱好包含编程的数据 如果是多项选项的,我们需要用and连接两个选项之间
【重学 MySQL】五十七、日期与时间类型 在MySQL中,日期与时间类型用于存储和操作日期和时间数据。这些类型根据所需存储的信息的精确度和范围而有所不同。...TIME类型不仅可以表示一天之内的时间(必须小于24小时),还可以表示某个事件过去的时间或两个事件之间的时间间隔(可大于24小时,甚至为负)。 存储需求:3个字节。...如果插入一个不合法的字符串或者数字,MySQL在存储数据时,会将其自动转化为00:00:00进行存储。比如1210,MySQL会将最右边的两位解析成秒,表示00:12:10,而不是12:10:00。...MySQL允许“不严格”语法,任何标点符号都可用作日期部分或时间部分之间的间隔符。 TIMESTAMP类型 用途:用于存储日期和时间,与DATETIME类型类似,但支持时区转换。...其他注意事项 在选择日期与时间类型时,应根据实际需求考虑使用哪种类型,以提高存储效率和查询性能,同时保证数据的准确性。
24、如果一个表有一列定义为TIMESTAMP,将发生什么? 每当行被更改时,时间戳字段将获取当前时间戳。 25、列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?...29、如何在Unix和Mysql时间戳之间进行转换?...UNIX_TIMESTAMP是从Mysql时间戳转换为Unix时间戳的命令 FROM_UNIXTIME是从Unix时间戳转换为Mysql时间戳的命令 30、列对比运算符是什么?...BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。...DATEDIFF(A,B) - 确定两个日期之间的差异,通常用于计算年龄 SUBTIMES(A,B) - 确定两次之间的差异。 FROMDAYS(INT) - 将整数天数转换为日期值。
领取专属 10元无门槛券
手把手带您无忧上云