TIDB日期和时间类型

这篇具有很好参考价值的文章主要介绍了TIDB日期和时间类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TIDB日期和时间类型

一、日期和时间

DATE、DATETIME和TIMESTAMP

1、DATE

DATE 类型的格式为 YYYY-MM-DD,支持的范围是 1000-01-01 到 9999-12-31。

2、TIME 类型

TIME 类型的格式为 HH:MM:SS[.fraction],支持的范围是 -838:59:59.000000 到 838:59:59.000000。TIME 不仅可用于指示一天内的时间,还可用于指两个事件之间的时间间隔。fsp 参数表示秒精度,取值范围为:0 ~ 6,默认值为 0。

3、DATETIME 类型

DATETIME 类型是日期和时间的组合,格式为 YYYY-MM-DD HH:MM:SS[.fraction]。支持的范围是 1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.000000。 fsp 参数表示秒精度,取值范围为 0~6,默认值为 0。

4、TIMESTAMP 类型

TIMESTAMP 类型包含日期和时间,支持的范围是 1970-01-01 00:00:01.000000 到 2038-01-19 03:14:07.999999。fsp参数表示秒精度,取值范围为 0~6,默认值为 0。在 TIMESTAMP 中,不允许零出现在月份部分或日期部分,唯一的例外是零值本身 ‘0000-00-00 00:00:00’。

5、YEAR 类型

YEAR类型的格式为 ‘YYYY’,支持的值范围是 1901 到 2155,或零值 0000。

二、数据类型概述

TiDB 支持除空间类型 (SPATIAL) 之外的所有 MySQL 数据类型,包括数值型类型、字符串类型、时间和日期类型、JSON 类型。

数据类型定义一般为 T(M[, D]),其中:

T 表示具体的类型。
M 在整数类型中表示最大显示长度;在浮点数或者定点数中表示精度;在字符类型中表示最大长度。M 的最大值取决于具体的类型。
D 表示浮点数、定点数的小数位长度。
fsp 在时间和日期类型里的 TIME、 DATETIME 以及 TIMESTAMP 中表示秒的精度,其取值范围是 0 到 6。值为 0,表示没有小数部分。如果省略,则默认精度为 0。

三、数据类型的默认值

1、在一个数据类型描述中的 DEFAULT value 段描述了一个列的默认值。这个默认值必须是常量,不可以是一个函数或者是表达式。但是对于时间类型,可以例外的使用 NOW 、CURRENT_TIMESTAMP 、LOCALTIME 、LOCALTIMESTAMP 等函数作为 DATETIME 或者 TIMESTAMP 的默认值。

2、BLOB 、TEXT 以及 JSON 不可以设置默认值。

3、如果一个列的定义中没有 DEFAULT 的设置。TiDB 按照如下的规则决定:

4、如果该类型可以使用 NULL 作为值,那么这个列会在定义时添加隐式的默认值设置 DEFAULT NULL
5、如果该类型无法使用 NULL 作为值,那么这个列在定义时不会添加隐式的默认值设置。
6、对于一个设置了 NOT NULL 但是没有显式设置 DEFAULT 的列,当 INSERTREPLACE 没有涉及到该列的值时,TiDB 根据当时的 SQL_MODE 进行不同的行为:

7、如果此时是 strict sql mode ,在事务中的语句会导致事务失败并回滚,非事务中的语句会直接报错。
8、如果此时不是 strict sql mode ,TiDB 会为这列赋值为列数据类型的隐式默认值。
此时隐式默认值的设置按照如下规则:

-------对于数值类型,它们的默认值是 0。当有 AUTO_INCREMENT 参数时,默认值会按照增量情况赋予正确的值。
------对于除了时间戳外的日期时间类型,默认值会是该类型的“零值”。时间戳类型的默认值会是当前的时间。
-----对于除枚举以外的字符串类型,默认值会是空字符串。对于枚举类型,默认值是枚举中的第一个值。

四、数值类型

TiDB 支持 MySQL 所有的数值类型,按照精度可以分为:

整数类型(精确值)
浮点类型(近似值)
定点类型(精确值)

1、整数类型

TiDB 支持 MySQL 所有的整数类型,包括 INTEGER/INT、TINYINT、SMALLINT、MEDIUMINT 以及 BIGINT,完整信息参考这篇文档。

1.1 字段说明:

M 类型: 显示宽度,可选
UNSIGNED 无符号数: 如果不加这个标识,则为有符号数
ZEROFILL 补零标识: 如果有这个标识,TiDB 会自动给类型增加 UNSIGNED 标识,但是没有做补零的操作

1.2 类型定义

1、BIT 类型
比特值类型。M 表示比特位的长度,取值范围从1到64,其默认值是1。

2、BOOLEAN 类型
布尔类型,别名为 BOOL,和 TINYINT(1) 等价。零值被认为是 False,非零值认为是 True。在TiDB 内部,True 存储为 1,False 存储为 0。

3、TINYINT 类型
TINYINT类型。有符号数的范围是 [-128, 127] 。无符号数的范围是 [0, 255] 。

4、MEDIUMINT 类型
MEDIUMINT 类型。有符号数的范围是 [-8388608, 8388607]。无符号数的范围是 [0, 16777215]。

5、INTEGER 类型
INTEGER 类型,别名 INT。有符号数的范围是 [-2147483648, 2147483647]。无符号数的范围是 [0, 4294967295]。

6、BIGINT 类型
BIGINT 类型。有符号数的范围是 [-9223372036854775808, 9223372036854775807]。无符号数的范围是 [0, 18446744073709551615]

2、浮点类型

TiDB 支持 MySQL 所有的浮点类型,包括 FLOAT、DOUBLE。

2.1 字段说明:

M : 小数总位数
D : 小数点后位数
UNSIGNED: 无符号数,如果不加这个标识,则为有符号数
ZEROFILL: 补零标识,如果有这个标识,TiDB会自动给类型增加UNSIGNED标识

2.2类型定义

1、FLOAT 类型
单精度浮点数。允许的值范围为 -2^128 ~ +2^128,也即 -3.402823466E+38 到 -1.175494351E-38、0 和 1.175494351E-38 到 3.402823466E+38。这些是基于 IEEE 标准的理论限制。实际的范围根据硬件或操作系统的不同可能稍微小些。

FLOAT( p ) 类型中,p 表示精度(以位数表示)。只使用该值来确定是否结果列的数据类型为 FLOAT 或 DOUBLE。如果 p 为从 0 到 24,数据类型变为没有 M 或 D 值的 FLOAT。如果 p 为从 25 到 53,数据类型变为没有 M 或 D 值的 DOUBLE。结果列范围与本节前面描述的单精度 FLOAT 或双精度 DOUBLE 数据类型相同

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
FLOAT(p) [UNSIGNED] [ZEROFILL]

与在 MySQL 中一样,FLOAT 数据类型存储近似值。对于货币之类的精确值,建议使用 DECIMAL 类型。

2、DOUBLE 类型
双精度浮点数,别名为 DOUBLE PRECISION。允许的值范围为:-2^1024 ~ +2^1024,也即是 -1.7976931348623157E+308 到 -2.2250738585072014E-308、0 和 2.2250738585072014E-308 到 1.7976931348623157E+308。这些是基于 IEEE 标准的理论限制。实际的范围根据硬件或操作系统的不同可能稍微小些。

**

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
DOUBLE PRECISION [(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

**
与在 MySQL 中一样,DOUBLE 数据类型存储近似值。对于货币之类的精确值,建议使用 DECIMAL 类型。

2.3 DECIMAL 类型
定点数,别名为 NUMERIC。M 是小数位数(精度)的总数,D 是小数点(标度)后面的位数。小数点和 -(负数)符号不包括在 M 中。如果 D 是 0,则值没有小数点或分数部分。如果 D 被省略,默认是 0。如果 M 被省略,默认是 10。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
3、字符串类型

TiDB 支持 MySQL 所有的字符串类型,包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 以及 SET,完整信息参考这篇文档。

3.1、类型定义
1、CHAR 类型
定长字符串。CHAR 列的长度固定为创建表时声明的长度。长度可以为从 0 到 255 的任何值。当保存 CHAR 值时,在它们的右边填充空格以达到指定的长度。

[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

2、VARCHAR 类型
变长字符串。M 表示最大列长度,范围是 0 到 65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定。

[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

3、TEXT 类型
文本串。M 表示最大列长度,范围是 0 到 65535。TEXT 的最大实际长度由最长的行的大小和使用的字符集确定。

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

4、TINYTEXT 类型
类似于 TEXT,区别在于最大列长度为 255。

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

5、MEDIUMTEXT 类型
类似于 TEXT,区别在于最大列长度为 16,777,215。

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

6、LONGTEXT 类型
类似于 TEXT,区别在于最大列长度为 4,294,967,295。

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

7、BINARY类型
类似于 CHAR,区别在于 BINARY 存储的是二进制字符串。

BINARY(M)

8、VARBINARY类型
类似于 VARCHAR,区别在于 VARBINARY 存储的是二进制字符串。

VARBINARY(M)

9、TINYBLOB 类型
类似于 BLOB,区别在于最大列长度为 255。

TINYBLOB

10、BLOB 类型
二进制大文件。M表示最大列长度,范围是 0 到 65535。

BLOB[(M)]

11、MEDIUMBLOB 类型
类似于 BLOB,区别在于最大列长度为 16,777,215。

MEDIUMBLOB

12、LONGBLOB 类型
类似于 BLOB,区别在于最大列长度为 4,294,967,295。

LONGBLOB

13、ENUM 类型
枚举类型是一个字符串,它只能有一个值的字符串对象。其值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

例如:文章来源地址https://www.toymoban.com/news/detail-715713.html

ENUM('apple', 'orange', 'pear')

到了这里,关于TIDB日期和时间类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TiDB实战篇-TiDB Lightning 导入数据

    使用TiDB Lightning 导入数据。 它是使用物理导入的模式,将SQL文件直接导入到TiKV中,它是一种初始化的导入,也就是说目标的数据库和表都是不能够存在的(注意事项,在这种方式导入的时候TiKV要切换到导入模式才行) 。      先导入数据,然后在导入索性。   Logical Impo

    2024年02月04日
    浏览(32)
  • TIDB简介及TIDB部署、原理和使用介绍

    数据库分类 ​ 介绍TiDB数据库之前,先引入使用场景。如今的数据库种类繁多,RDBMS(关系型数据库)、NoSQL(Not Only SQL)、NewSQL,在数据库领域均有一席之地,可谓百家争鸣之势。那么我们为什么要学习使用TiDB呢?接下来就从我们最熟悉的MySQL的使用说起。 MySQL痛点 ​ 假设

    2023年04月20日
    浏览(22)
  • TiDB 源码编译之 PD/TiDB Dashboard 篇

    作者: ShawnYan 原文来源: https://tidb.net/blog/a16b1d46 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时

    2024年02月14日
    浏览(30)
  • BenchmarkSQL 支持 TiDB 驱动以及 tidb-loadbalance

    作者: GangShen 原文来源: https://tidb.net/blog/3c274180 TiDB-JDBC **是基于 MySQL 8.0.29 的定制版本。TiDB-JDBC 基于 MySQL 官方 8.0.29 版本编译,修复了原 JDBC 在 prepare 模式下多参数、多字段 EOF 的错误,并新增 TiCDC snapshot 自动维护和 SM3 认证插件等功能。 tidb-loadbalance 是应用端的负载均衡

    2024年02月14日
    浏览(32)
  • TiDB 应急运维脚本,更加方便的管理TiDB集群

    TiDB 应急运维脚本,更加方便的管理TiDB集群 使用方法 修改权限 使用示例

    2024年02月12日
    浏览(34)
  • [tidb] tiup升级tidb的版本到 v7.1.1

    为了避免数据丢失,升级前需要备份当前tidb集群的数据,参考 TiDB 备份与恢复概述 | PingCAP 文档中心 说明 由于新版本的tidb的tiflash需要cpui支持avx2,所有升级前先验证当前升级的服务器是否支持avx2。升级的文档可以参考 使用 TiUP 升级 TiDB | PingCAP 文档中心 ### 验证cpu是否支持

    2024年02月13日
    浏览(27)
  • tidb流式读取配置

    程序中执行会话变量(显示数据速度):--后是tidb默认值。 配合流式读取,作如下读取速度限制, 限制fullscanindex速度: 以下是在java中的示例,com.adata.common.tidb.read.是java包类名: com.adata.common.tidb.read.tidb_distsql_scan_concurrency=1; --15 com.adata.common.tidb.read.tidb_init_chunk_size=8; --32 com.a

    2024年02月21日
    浏览(24)
  • TIDB简介及基础架构

    TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 SQL,传统关系型数据库,例如 MySQL noSQL,例如 MongoDB,Redis newSQL 1.1.1 传统SQL的问题 互联

    2024年02月12日
    浏览(26)
  • TiDB简介与应用场景

    在当今互联网时代,数据的规模和复杂性不断增长,传统关系型数据库面临着无法满足高并发和大规模数据存储需求的挑战。为了解决这一问题,开源社区涌现出了一系列分布式数据库解决方案,其中TiDB作为一种新兴的分布式数据库引起了广泛的关注。本文将介绍TiDB的基本

    2024年02月10日
    浏览(32)
  • tidb之旅——生成列

    作者: 有猫万事足 原文来源: https://tidb.net/blog/15d0fbf6 之前弄好了TiDB集群,也弄好了dm集群,把写入流量整个切入了TiDB集群运行起来了。但是有个别比较大的日志表,OLAP查询的表现还是不太行。正好7.1版本发布了,我看到tiflash支持存算分离且可以把数据放在s3上——没错,

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包