文档主页
MySQL 5.7参考手册
相关文档 下载本手册
PDF(US Ltr) - 38.2Mb
PDF(A4) - 38.2Mb
PDF(RPM) - 37.6Mb
HTML下载(TGZ) - 10.2Mb
HTML下载(Zip) - 10.3Mb
HTML下载(RPM) - 9.0Mb手册
页) - 197.4Kb手册
页(Zip) - 305.9Kb
信息(Gzip) - 3.5Mb
信息(Zip) - 3.5Mb
摘自本手册

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

11.3日期和时间类型

日期和时间类型代表的时间值 DATETIMEDATETIMETIMESTAMP,和 YEAR每个时态类型都有一个有效值的范围,还有一个值,当你指定一个MySQL无法表示的无效值时可以使用它。TIMESTAMP类型具有特殊的自动更新行为,稍后介绍。有关时间类型存储要求,请参见 第11.8节“数据类型存储要求”

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

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

  • 虽然MySQL试图以多种格式来解释值,但是日期部分必须总是以年 - 月 - 日的顺序(例如'98-09-04')给出,而不是在其他地方常用的月 - 日 - 年或日 - 月 - 年的顺序例如'09-04-98''04-09-98')。

  • 包含两位数年份的日期含糊不清,因为这个世纪是未知的。MySQL使用这些规则来解释两位数的年份值:

    • 范围内的年份值将70-99被转换为1970-1999

    • 范围内的年份值将00-69被转换为2000-2069

    另见第11.3.8节“日期的两位数字”

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

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

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

  • By setting the SQL mode to the appropriate value, you can specify more exactly what kind of dates you want MySQL to support. (See Section 5.1.8, “Server SQL Modes”.) You can get MySQL to accept certain dates, such as '2009-11-31', by enabling the ALLOW_INVALID_DATES SQL mode. This is useful when you want to store a possibly wrong value which the user has specified (for example, in a web form) in the database for future processing. Under this mode, MySQL verifies only that the month is in the range from 1 to 12 and that the day is in the range from 1 to 31.

  • MySQL允许你存储一天或一天​​或一天​​在一个DATE或一 DATETIME中为零的日期这对于需要存储生日的应用程序非常有用,您可能不知道确切的日期。在这种情况下,您只需将日期存储为'2009-00-00''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模式,则使用这些值会产生警告

数据类型 价值
DATE '0000-00-00'
TIME '00:00:00'
DATETIME '0000-00-00 00:00:00'
TIMESTAMP '0000-00-00 00:00:00'
YEAR 0000

用户评论
注册 登录 您必须登录后才能发表评论。