暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU 翻译] MySQL 11.2 日期和时间数据类型

原创 由迪 2021-12-24
437

的日期和时间数据类型用于表示时间值 DATETIMEDATETIMETIMESTAMP,和 YEAR。每个时间类型都有一个有效值范围,以及一个“零”值,当您指定一个 MySQL 无法表示的无效值时,可以使用该值。该TIMESTAMPDATETIME类型有特殊的自动更新的行为,在描述 第11.2.5节,“自动初始化和更新TIMESTAMP和DATETIME”

有关临时数据类型的存储要求的信息,请参阅第 11.7 节,“数据类型存储要求”

有关对时间值进行操作的函数的说明,请参阅 第 12.7 节,“日期和时间函数”

使用日期和时间类型时,请记住以下一般注意事项:

  • MySQL 以标准输出格式检索给定日期或时间类型的值,但它尝试解释您提供的输入值的各种格式(例如,当您指定要分配给日期或与日期或时间类型)。有关日期和时间类型允许的格式的说明,请参阅 第 9.1.3 节,“日期和时间文字”。预计您提供有效值。如果您使用其他格式的值,可能会出现不可预测的结果。

  • 尽管 MySQL 尝试以多种格式解释值,但日期部分必须始终按年-月-日顺序给出(例如,'98-09-04'),而不是其他地方常用的月-日-年或日-月-年顺序(例如例如'09-04-98',, '04-09-98')。要将其他顺序的字符串转换为年-月-日顺序,该 STR_TO_DATE()函数可能很有用。

  • 包含 2 位年份值的日期不明确,因为世纪未知。MySQL 使用以下规则解释 2 位年份值:

    • 范围内的年份值70-99变为 1970-1999
    • 范围内的年份值00-69变为 2000-2069

    另请参见第 11.2.8 节,“日期中的 2 位数年份”

  • 根据第 11.2.7 节“日期和时间类型之间的转换”中的规则,将值从一种时间类型转换为另一种 。

  • 如果值用于数字上下文,MySQL 会自动将日期或时间值转换为数字,反之亦然。

  • 默认情况下,当 MySQL 遇到超出范围或对该类型无效的日期或时间类型的值时,它会将值转换为该类型的“零”值。例外情况是超出范围的TIME值会被剪裁到范围 的适当端点 TIME

  • 通过将 SQL 模式设置为适当的值,您可以更准确地指定您希望 MySQL 支持的日期类型。(请参阅第 5.1.11 节,“服务器 SQL 模式”。)您可以'2009-11-31'通过启用 ALLOW_INVALID_DATESSQL 模式让 MySQL 接受某些日期,例如 。当您想在数据库中存储用户指定的“可能错误”值(例如,在 Web 表单中)以供将来处理时,这很有用。在这种模式下,MySQL 只验证月份在 1 到 12 的范围内,以及日期在 1 到 31 的范围内。

  • MySQL 允许您在 aDATEDATETIME列中存储日期或月份和日期为零的日期。这对于需要存储您可能不知道确切日期的生日的应用程序很有用。在这种情况下,您只需将日期存储为'2009-00-00'or '2009-01-00'。但是,对于诸如此类的日期,您不应期望获得诸如DATE_SUB()DATE_ADD()需要完整日期之类的函数的正确结果。要禁止日期中的零月份或日期部分,请启用该NO_ZERO_IN_DATE 模式。

  • MySQL 允许您将“零”值 存储'0000-00-00'为“虚拟日期”。”在某些情况下,这比使用NULL值更方便,并且使用更少的数据和索引空间。要禁止'0000-00-00',请启用该NO_ZERO_DATE 模式。

  • 通过连接器/ODBC 使用的“零”日期或时间值会自动转换为, NULL因为 ODBC 无法处理此类值。

下表显示了 每种类型的“零”值的格式。在“零”值是特殊的,但你可以存储或引用它们明确使用表中显示的值。您也可以使用更容易编写的值'0'或来执行此操作 0。对于包含日期部分(DATEDATETIMETIMESTAMP)的时间类型,使用这些值可能会产生警告或错误。确切的行为取决于NO_ZERO_DATE启用了严格模式和SQL 模式中的哪一个(如果 有);请参阅第 5.1.11 节,“服务器 SQL 模式”

数据类型 “零”值
DATE '0000-00-00'
TIME '00:00:00'
DATETIME '0000-00-00 00:00:00'
TIMESTAMP '0000-00-00 00:00:00'
YEAR 0000
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论