10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 236.9 kb
手册页(Zip)- 348.5 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

11.2.2 DATE、DATETIME和TIMESTAMP类型

日期DATETIME,时间戳类型是相关的。本节描述它们的特征、相似之处和不同之处。MySQL承认日期DATETIME,时间戳中描述的几种格式的值第9.1.3节“日期和时间字面值”.为日期而且DATETIME范围描述,支持意味着尽管早期的值可能有效,但不能保证有效。

日期类型用于有日期部分但没有时间部分的值。MySQL检索和显示日期YYYY-MM-DD格式。支持的范围为“1000-01-01”“9999-12-31”

DATETIME类型用于同时包含日期和时间部分的值。MySQL检索和显示DATETIMEYYYY-MM-DD hh: mm: ss格式。支持的范围为“1000-01-01”就是“9999-12-31 23:59:59”

时间戳数据类型用于同时包含日期和时间部分的值。时间戳有一系列的“1970-01-01 00:00:01”UTC,“2038-01-19 03:14:07”UTC。

一个DATETIME时间戳Value可以包括后面的小数秒部分,精度最高可达微秒(6位数)。的值中的任何小数部分DATETIME时间戳列被存储而不是被丢弃。包括小数部分后,这些值的格式为YYYY-MM-DD hh: mm: ss(。分数]“,为DATETIME“1000-01-01 00:00:00.000000”“9999-12-31 23:59:59.999999”的范围时间戳“1970-01-01 00:00:01.000000”“2038-01-19 03:14:07.999999”.小数部分应始终与其余部分以小数点隔开;不识别其他小数秒分隔符。有关MySQL中分数秒支持的信息,请参见第11.2.7节“时间值中的小数秒”

时间戳而且DATETIME数据类型提供自动初始化和更新到当前日期和时间。有关更多信息,请参见第11.2.6节,TIMESTAMP和DATETIME的自动初始化和更新

MySQL转换时间戳从当前时区到UTC的值用于存储,从UTC到当前时区的值用于检索。(这不会发生在其他类型,如DATETIME)。默认情况下,每个连接的当前时区是服务器的时间。可以根据每个连接设置时区。只要时区设置保持不变,您就会得到您存储的相同值。如果你存储时间戳值,然后更改时区并检索该值,检索的值与您存储的值不同。这是因为在两个方向的转换中没有使用相同的时区。的值中显示当前时区time_zone系统变量。有关更多信息,请参见章节5.1.13,“MySQL服务器时区支持”

无效的日期DATETIME,或时间戳值转换为适当类型的值(“0000-00-00”“0000-00-00”就是),如果SQL模式允许这种转换。准确的行为取决于严格的SQL模式和NO_ZERO_DATE启用SQL模式;看到章节5.1.10,“Server SQL模式”

注意MySQL中数据值解释的某些属性:

  • MySQL允许放松以字符串形式指定的值的格式,其中任何标点字符都可以用作日期部分或时间部分之间的分隔符。在某些情况下,这种语法可能具有欺骗性。例如,一个值,如“10:11:12”可能看起来像一个时间值,因为,但被解释为年“2010-11-12”如果在日期上下文中使用。的值“10:45:15转换为“0000-00-00”因为“45”不是有效的月份。

    日期和时间部分与小数秒部分之间唯一可识别的分隔符是小数点。

  • 服务器要求月和日值有效,而不仅仅是1到12和1到31的范围。禁用严格模式后,无效日期如“2004-04-31”被转换为“0000-00-00”并生成一个警告。启用严格模式后,无效日期将生成错误。要允许这样的日期,启用ALLOW_INVALID_DATES.看到章节5.1.10,“Server SQL模式”,以获取更多资料。

  • MySQL不接受时间戳在日或月列中包含零的值或不是有效日期的值。这个规则唯一的例外是特殊的价值“0000-00-00”就是,如果SQL模式允许此值。准确的行为取决于严格的SQL模式和NO_ZERO_DATE启用SQL模式;看到章节5.1.10,“Server SQL模式”

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

    • 范围内的年份值00 - 69成为2000 - 2069

    • 范围内的年份值70 - 99成为1970 - 1999

    另请参阅第11.2.9节“2位数字年份”

请注意

MySQL服务器可以使用MAXDB启用SQL模式。在这种情况下,时间戳是相同的DATETIME.如果在创建表时启用了此模式,时间戳列创建为DATETIME列。因此,这样的列使用DATETIME显示格式,具有相同的值范围,并且没有自动初始化或更新到当前日期和时间。看到章节5.1.10,“Server SQL模式”

请注意

从MySQL 5.7.22开始,MAXDB弃用;希望在MySQL的未来版本中删除它。