`
风雪涟漪
  • 浏览: 507224 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9013
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18412
社区版块
存档分类
最新评论

Schema的优化和索引 - 选择最佳的数据类型 - 日期和时间类型

阅读更多

日期和时间类型

 

MySQL对于不同种类的日期和时间有很多的数据类型,比如YEAR和DATE。MySQL可保存时间颗粒度是一秒。然而,时间的计算可以精确到毫秒。我们将会教你如何解决存储引擎的局限性。

 

大部分时间类型都没有什么可选择的。所以那个是最佳的选择不是一个问题。只有一个问题那就是当你即要保存日期也要保存时间的时候,将要做什么。MySQL提供了两个类型来满足这个需求:DATETIME和TIMESTAMP.对许多应用而言,任意一个都可以,但是在一些案例中,一个要好于另一个。让我们来看看:

 

DATETIME

这个类型可以保存大范围的值。从1001到9999.精度精确到了秒。它保存日期和时间压缩到为YYYYMMDDHHMMSS格式的整型,独立的时间区域。这会占用8字节的存储空间。

 

默认的MySQL显示DATETIME为排序的,清晰地格式,比如2008-01-16 22:37:08。这是符合ANSI标准的日期和时间。

 

TIMESTAMP

就像名字所提示的一样,TIMESTAMP类型存储了从1970 1.1 开始所经过秒的数量-这个UNIX的TIMESTAMP是一样的。因此它的范围要比DATATIME要小一些:从1970年到2038年。MySQL提供了FROM_UNIXTIME和UNIX_TIMESTAMP函数,用来把Unix的timestamp转为data,反之亦然。

 

新版的MySQL的TIMESTAMP值像DATETIME.但是旧版MySQL显示它们没有任何的标点。仅仅是显示格式的不同。TIMESTAMP存储在MySQL的方式在所有MySQL版本中都是一样的。

 

TIMSTAMP的现实也依赖于时区。MySQL服务器,操作系统,客户端连接所有的都有时区的设置。因此,一个TIMESTAMP存值为0,实际显示的是东部夏令时间,1969-12-31 19:00:00。相对GMT有5个时差。

 

TIMESTAMP也有一个DATETIME不具备的属性。默认的情况下,当你插入一条记录并没有指定这个值,MySQL会把TIMESTAMP列设为当前的时间。当你更新这一行的时候,MySQL也会更新TIMESTAMP列。除非你给TIMESTAMP指定一个值。对于任意的TIMESTAMP,你可以配置插入和更新的行为。最终,TIMESTAMP列默认不能为NULL.这点和其他的类型有所不同。

 

 

先撇特殊行为不谈,一般来说,如果能用TIMESTAMP就应该用,因为它空间上比DATETIME更有效用。有的时候人们用整型来存储UNIX的TIMESTAMP,但是这么做不能带来什么好处。这么做也不太容易去处理,我们不建议这么做。

 

怎样保存比秒更精确的时间?MySQL还没有这些数据类型,但你可以使用你自己的存储类型:你可以使用BIGINT类型并且存储这个值作为在微妙级别的TIMESTAMP,或者你可以使用DOUBLE并且存储小数点之后的秒的小数部分。

 

分享到:
评论

相关推荐

    MySQL优化面面观----优化查询效率.pdf

    索引设计需兼顾查询覆盖率和维护成本,字段类型选择应以简洁和匹配实际需求为主,尽量减少不必要的存储空间占用。通过这些方法,可以在不牺牲数据完整性和系统稳定性的情况下,有效地提升数据库的查询效率。

    MySQL优化文档笔记

    日期时间类型如`DATETIME`用于记录日期和时间,无时区信息,存储效率在不同版本中有所改变。如果需要考虑时区,可以使用`TIMESTAMP`。 总结来说,MySQL优化涵盖了从连接管理、SQL编写、存储引擎选择到数据类型优化...

    mysql优化方案

    在 Schema 设计优化中,我们需要使用合适的存储引擎,例如 InnoDB 引擎,which 可以缓存索引+数据,并且具有高并发性、数据一致性和 Crash Recovery 等特点。此外,我们还需要设计自增列主键,使用 INT UNSIGNED ...

    MSSQLServer:分区表、分区索引详解[归类].pdf

    - **参数**:包括分区函数名、输入参数类型、边界值等,确保边界值与分区列的数据类型匹配。 - **注意事项**:边界值可以是常量、变量、函数等,但不能包含会话语言敏感的值,如日期格式,以避免跨语言环境的问题...

    sqlserver2005 创建分区表 分区索引 注意事宜 分区索引

    分区表和分区索引是SQL Server 2005为企业级数据管理和性能优化提供的重要特性,尤其适用于处理大量数据的大型表。分区能够将数据划分为独立的、易于管理的块,这有助于提升查询性能,特别是在具有多种访问模式的...

    S2-2-MySchool数据库设计优化(PPT+源码)【第二章】

    2. 正确选择数据类型:数据库表中的每个字段都需要指定适当的数据类型,如INT、VARCHAR、DATE等。选择正确的数据类型不仅可以节省存储空间,还能提高查询效率。例如,学生ID应使用整型,出生日期应使用日期类型。 3...

    mysql开发规范,mysql优化指南

    此外,规范还包括了其他一些重要建议,比如使用合适的日期和时间类型、避免使用复杂的表达式、优化排序和分组操作等。 文档还包含了FAQ部分,对一些常见问题进行了回答和澄清,如Schema设计中应如何处理过多字段、...

    mysql8中文参考手册.zip

    - MySQL支持多种数据类型,包括数值类型(如INT、FLOAT)、字符串类型(如VARCHAR、TEXT)、日期时间类型(如DATE、TIMESTAMP)等。选择合适的数据类型对于优化存储和查询性能至关重要。 - 字段约束如NOT NULL、...

    mysql 5.1 中文参考手册

    - MySQL支持多种数据类型,如数值(整数、浮点数、定点数)、字符串(CHAR、VARCHAR、TEXT)、日期和时间(DATE、TIME、DATETIME、TIMESTAMP)以及二进制类型(BLOB、BINARY)。 3. **SQL语法**: - SELECT语句:...

    深入学习MySQL.zip

    - 数据类型:了解MySQL支持的数据类型,如整数、浮点数、字符串、日期时间等。 - 表结构:学习如何创建、修改和删除表,理解主键、外键和索引的概念。 - SQL语句:掌握SELECT、INSERT、UPDATE、DELETE等基本操作...

    mysql规范mysql规范mysql规范

    - 对于日期和时间,使用`DATE`, `TIME`, `DATETIME`或`TIMESTAMP`。 - 避免使用`BLOB`和`TEXT`类型,除非绝对必要,因为它们处理起来效率较低。 7. **权限与安全**: - 使用不同的用户账户分配不同的权限,遵循...

    PostgreSQL 中文手册(书签全)

    - **日期和时间类型**:如`date`、`time`、`timestamp`等。 - **数组**:可以存储单个类型的多个值。 - **复合类型**:用户可以定义自己的数据类型。 ### 函数和操作符 PostgreSQL提供了一系列内置函数和操作符,...

    DBA神技之SQL Review

    - 字段类型的选择,确保数据类型的合理性和查询效率。 - 确保字段注释标准,提高代码的可读性。 - 分区表的约束设计,提高查询效率和数据管理的灵活性。 - SQL编写规范,包括DML语句的规范以及子查询的使用约束...

    大数据分析新玩法之 Kusto宝典.zip

    - 数据模型:Kusto采用列式存储,支持多种数据类型,如字符串、数字、日期等,同时提供了丰富的时间序列处理能力。 - 表格和表结构:数据以表格形式存储,每个表都有一个固定的schema,便于快速查询和理解。 - ...

    SQL学习指南数据库样例

    - **数据类型**:SQL支持多种数据类型,如整数(INTEGER)、浮点数(FLOAT)、字符串(VARCHAR)、日期/时间(DATE, DATETIME)等。 - **表创建**:`CREATE TABLE 表名 (列名 数据类型, 列名 数据类型, ...);` - ...

    HBase权威指南中文版+官方文档

    - **支持的数据类型**:列举HBase支持的数据类型。 - **生存时间(TTL)**:说明如何设置数据的有效期。 - **保留已删除的Cell**:探讨如何处理已删除的Cell。 - **二级索引与替代查询路径**:介绍实现二级索引的方法...

    mysql.rar_MYSQL

    - 数据库概念:MySQL是基于SQL(结构化查询语言)的数据库,用于存储和管理数据,支持多种数据类型,如数值、字符串、日期等。 - 关系模型:MySQL遵循关系数据库模型,通过表格形式组织数据,每个表格由列和行组成...

    mysql课件00000000000000000000000000000

    2. 数据类型:熟悉各种数据类型,如整数、浮点数、字符串、日期时间等,以及它们在不同场景下的应用。 3. SQL语句:学习SQL的基本操作,包括SELECT用于查询数据,INSERT用于插入数据,UPDATE用于更新数据,DELETE...

    oracle初学者1000问+oracle命令速查v

    - 数据类型:Oracle支持多种数据类型,如VARCHAR2(可变长度字符串)、NUMBER(数值)、DATE(日期)等。 - 关系模型:Oracle基于关系数据库模型,通过键(主键、外键)来关联不同表的数据。 2. **SQL语言** - ...

Global site tag (gtag.js) - Google Analytics