第 8 章 使用日期和时间 处理日期和时间
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
8.0 引言
MySQL 有几种表示日期和时间的数据类型,还有许多对它们进行操作的函数。MySQL 以特定格式存储日期和时间,了解它们对避免操作时间数据的结果出现意外很重要。本章包括在 MySQL 中处理日期和时间值的以下几个方面:
- 选择时态数据类型
在创建表格时,MySQL 提供了多种时间数据类型供您选择。了解了它们的属性,就能正确地选择它们。
- 显示日期和时间
MySQL 默认使用特定格式显示时间值。您可以使用相应的函数生成其他格式。
- 更改客户端时区
服务器按照客户端当前的时区而不是自己的时区解释
TIMESTAMP和DATETIME值。位于不同时区的客户端应设置自己的时区,以便服务器能正确解释TIMESTAMP的值。- 确定当前日期和时间
MySQL 提供返回日期和时间的函数。对于必须知道这些值或需要计算与之相关的其他时间值的应用程序来说,这些函数非常有用。
- 跟踪行的修改时间
TIMESTAMP和DATETIME数据类型具有特殊属性,可以自动记录行创建时间和最后修改时间。- 将日期和时间分解为组件值,并从组件值创建日期和时间
如果只需要一个分量,如日期的月份部分或时间的小时部分,则可以拆分日期和时间值。反之,您也可以组合组件值来合成日期和时间。
- 日期或时间与基本单位之间的转换
与使用日期或时间值本身相比,使用日期或时间值所代表的天数或秒数更容易执行某些时间计算,如日期算术运算。 MySQL 可以执行日期和时间值与天数或秒数等更基本单位之间的转换。
- 日期和时间运算
您可以通过加减时间值生成其他时间值或计算各值之间的时间间隔。应用包括年龄测定、相对日期计算和日期平移。
- 根据时间限制选择数据
前几节讨论的用于生成输出值的计算方法也可用于
WHERE子句,以指定如何使用时间条件选择行。
本章介绍了几个对日期和时间值进行操作的 MySQL 函数,但还有许多其他函数。要熟悉全套函数,请查阅《MySQL 参考手册》。 可用函数的多样性意味着,通常可以用多种方法执行给定的时间计算。我们有时会举例说明实现给定结果的其他方法,本章中涉及的许多问题都可以用此处所示方法以外的其他方法解决。我们邀请你进行实验,寻找其他解决方案。你可能会发现一种更有效或更直观的方法。
实现本章讨论的配方的脚本位于 ,在recipes 源代码发行版的dates目录中。用于创建表格的脚本位于tables目录中。
8.1 选择时态数据类型
问题
您需要存储时间数据,但不确定哪种数据类型最适合 。
解决方案
根据要存储信息的特点和使用方式选择数据类型。
讨论
要选择时态数据类型,请考虑以下问题:
您只需要时间值、日期值,还是日期和时间的组合值?
您需要的数值范围是多少?
您是否希望将列自动初始化为当前日期和时间?
MySQL 提供了用于分别表示日期和时间值的DATE 和TIME 数据类型,以及用于组合日期和时间值的DATETIME 和TIMESTAMP 类型。这些值具有以下特点:
DATE值有YYYY-MM-DD格式,其中YY,MM和DD代表日期的年、月、日部分。DATE值的支持范围是1000-01-01至9999-12-31。TIME值有hh:mm:ss格式,其中hh,mm和ss是时间的时、分、秒部分。TIME值通常被认为是一天中的时间值,但 MySQL 实际上将其视为经过时间。因此,它们可能大于23:59:59,甚至是负值。(TIME列的实际范围是-838:59:59 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access