10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

MySQL 8.0参考手册/数据类型/日期和时间数据类型

11.2日期和时间数据类型

表示时间值的日期和时间数据类型是日期时间约会时间时间戳,.每种时态类型都有一个有效值范围,以及一个当您指定MySQL不能表示的无效值时,可以使用该值。这时间戳约会时间类型具有特殊的自动更新行为,参见第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遇到超出范围或其他类型的时间类型或其他类型无效的值时,它将值转换为该类型的价值。例外是超出范围时间值剪辑到适当的终点时间范围。

  • 通过将SQL模式设置为适当的值,您可以更准确地指定您希望MySQL支持的类型的日期。(看第5.1.11节,“服务器SQL模式”。)你可以让MySQL接受某些日期,例如'2009-11-31',通过实现ALLOW_INVALID_DATESSQL模式。当您想要存储一个时,这很有用可能错了用户在数据库中指定的值(例如,在Web表单中)用于将来处理。在此模式下,MySQL仅验证月份为1到12的范围,并且当天的时间在1到31的范围内。

  • MySQL允许您存储日期,日期或月份和日期为零日期约会时间列。这对于需要存储您可能不知道确切日期的生日的应用程序是有用的。在本例中,您只需将日期存储为“2009-00-00”'2009-01-00'.但是,在诸如这些之类的日期,您不应该指望对诸如此类的功能获得正确的结果date_sub()DATE_ADD ()这需要完整的日期。要禁止日期中的零月或一天部分,请启用NO_ZERO_IN_DATE模式。

  • mysql允许您存储一个的价值'0000-00-00'作为一个假日。在某些情况下,这比使用更方便值,并使用更少的数据和索引空间。对不允许'0000-00-00',使no_zero_date.模式。

  • 通过连接器/ ODBC使用的日期或时间值将自动转换为因为ODBC不能处理这样的值。

下表显示了格式每种类型的值。这值是特殊的,但您可以使用表中显示的值显式存储或引用它们。您还可以使用值执行此操作'0'0.,这更易于写。对于包含日期部分的时间类型(日期约会时间,时间戳)使用这些值可能会产生警告或错误。精确的行为取决于严格和的,如果有的话no_zero_date.SQL模式已启用;看第5.1.11节,“服务器SQL模式”

数据类型 价值
日期 '0000-00-00'
时间 “就是”
约会时间 “0000-00-00”就是
时间戳 “0000-00-00”就是
0000.