vlambda博客
学习文章列表

在 MySQL 中处理日期和时间(一)

第一章节:DATE、TIME 和 DATETIME 类型


绝大多数数据库存储了大量的“时态”数据。时态数据只是表示时间状态的简单数据。一个组织可能出于各种原因收集时态数据,例如分析天气模式和其他环境变量、监控交通状况、研究人口趋势等。企业还经常需要存储有关何时下订单、何时补货、何时雇用员工,以及有关其日常业务的大量其他信息。


你可能会感到很惊讶,关系数据库不会以相同的方式存储日期和时间。MySQL 尤其具有规范性。例如,它使用通用 yyyy-mm-dd 格式存储日期值。此格式是固定的,不可更改。就算你更喜欢使用 mm-dd-yyyy 格式,也不可能这样做。但是,你可以使用 DATE_FORMAT 函数在表示层(通常是应用程序)中按照你想要的方式格式化日期。在“在 MySQL 中处理日期和时间”的前两部分中,我们将从 DATE、TIME 和 DATETIME 开始研究 MySQL 的时态数据类型。

  • 类型一览


MySQL 提供了五种用于存储日期和时间的类型,一些仅用于日期,另一些用于时间,还有一些包含两者。下表总结了每种类型:



本文的其余部分将更详细地介绍 DATE、TIME 和 DATETIME 类型,而下一篇文章将重点介绍另外两种类型。

  • DATE 类型


MySQL 使用 3 个字节来存储 DATE 值。DATE 值的范围是从 1000-01-01 到 9999-12-31。此外,当禁用严格模式(Strict Mode)时,MySQL 会将任何无效日期(例如 2015-02-30)转换为零日期值 0000-00-00。


在 Navicat 客户端的表设计器中,你可以从“类型”下拉列表中选择 DATE 类型:

在 MySQL 中处理日期和时间(一)

若要设置 DATE 值,你可以使用日历控件简单地选择日期:

在 MySQL 中处理日期和时间(一)


当然,你也可以使用 INSERT 语句插入 DATE:

在 MySQL 中处理日期和时间(一)


  • TIME 类型


MySQL 使用“HH:MM:SS”格式来查询和显示表示一天中 24 小时内某个时间的时间值。当表示两个事件之间的时间间隔时,MySQL 使用大于 24 小时的“HHH:MM:SS”格式。


以下是 Navicat 表设计“类型”下拉列表中的 TIME 类型:

在 MySQL 中处理日期和时间(一)


Navicat 提供了 TIME INPUT 控件设置 TIME 值:

在 MySQL 中处理日期和时间(一)


以下是一个设置开始和结束时间的 INSERT 语句:

在 MySQL 中处理日期和时间(一)


  • DATETIME 类型


很多时候,你需要同时存储日期和时间。为此,你可以使用 MySQL DATETIME 类型。默认情况下,DATETIME 值的范围是从 1000-01-01 00:00:00 到 9999-12-31 23:59:59。当你从 DATETIME 列查询数据时,MySQL 会以相同的 YYYY-MM-DD HH:MM:SS 格式显示 DATETIME 值。


DATETIME 值使用 8 个字节进行存储。此外,DATETIME 值可以包含一个尾随小数秒,最细可以到微秒,格式为 YYYY-MM-DD HH:MM:SS[.fraction],例如 2015-12-20 10:01:00.999999。


对于输入 DATETIME 值,Navicat 提供了 DATETIME INPUT 控件,它结合了 DATE 和 TIME 控件:

在 MySQL 中处理日期和时间(一)


DATETIME 值可以使用包含“T”时间部分描述符的字符串文字或通过转换为 DATETIME 来设置:


  • 预告


在探讨了 DATE、TIME 和 DATETIME 类型之后,下一部分将介绍剩余的两种时间类型:TIMESTAMP 和 YEAR。

推荐阅读


(点击标题可跳转阅读)




- End -
动动手指转发、在看
是对我最大的鼓励