10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

11.2.1日期和时间数据类型语法

表示时态值的日期和时间数据类型为日期时间DATETIME时间戳,一年

日期DATETIME范围描述,支持意味着尽管早期的值可能有效,但不能保证。

MySQL允许小数秒时间DATETIME,时间戳值,具有高达微秒(6位数字)的精度。要定义包含小数秒部分的列,请使用语法type_namefsp,在那里type_name时间DATETIME,或时间戳,fsp是分数秒精度。例如:

CREATE TABLE t1 (t TIME(3), dt DATETIME(6), ts TIMESTAMP(0));

fsp值,如果给定,则必须在0到6之间。值为0表示没有小数部分。如果省略,默认精度为0。(这不同于标准SQL默认的6,以与以前的MySQL版本兼容。)

任何时间戳DATETIME表中的列可以具有自动初始化和更新属性;看到第11.2.5节“TIMESTAMP和DATETIME的自动初始化和更新”

  • 日期

    一个日期。支持的范围为“1000-01-01”“9999-12-31”。MySQL显示日期YYYY-MM-DD格式,但允许将值赋值给日期使用字符串或数字的列。

  • DATETIME [(fsp)]

    日期和时间的组合。支持的范围为“1000-01-01 00:00:00.000000”“9999-12-31 23:59:59.999999”。MySQL显示DATETIMEYYYY-MM-DD hh: mm: ss(。分数]“格式,但允许将值赋值给DATETIME使用字符串或数字的列。

    一个可选的fsp取值范围从0到6可以指定分数秒精度。值为0表示没有小数部分。如果省略,默认精度为0。

    自动初始化并更新为当前日期和时间DATETIME列可以使用默认的在更新列定义子句,如中所述第11.2.5节“TIMESTAMP和DATETIME的自动初始化和更新”

  • 时间戳((fsp)]

    一个时间戳。范围是“1970-01-01 00:00:01.000000”UTC,“2038-01-19 03:14:07.999999”UTC。时间戳值被存储为自epoch (“1970-01-01”就是UTC)。一个时间戳不能表示值“1970-01-01”就是因为这相当于从纪元开始算起的0秒而0的值被保留用来表示“0000-00-00”就是,时间戳价值。

    一个可选的fsp取值范围从0到6可以指定分数秒精度。值为0表示没有小数部分。如果省略,默认精度为0。

    服务器处理的方式时间戳的值决定定义explicit_defaults_for_timestamp系统变量(见第5.1.8节,“服务器系统变量”).

    如果explicit_defaults_for_timestamp启用时,没有自动分配默认CURRENT_TIMESTAMP在更新CURRENT_TIMESTAMP任何属性时间戳列。它们必须显式包含在列定义中。此外,任何时间戳未显式声明为非空许可证值。

    如果explicit_defaults_for_timestamp禁用,服务器处理时间戳如下:

    除非另有说明,第一个时间戳表中的列定义为,如果未显式分配值,则自动设置为最近修改的日期和时间。这使得时间戳用于记录的时间戳插入更新操作。你也可以设置任何时间戳将当前日期和时间赋值为值,除非已用属性允许值。

    可以使用命令指定自动初始化和更新到当前日期和时间默认CURRENT_TIMESTAMP在更新CURRENT_TIMESTAMP列定义条款。默认情况下,是第一个时间戳列具有这些属性,如前所述。然而,任何时间戳表中的列可以定义为具有这些属性。

  • 时间((fsp)]

    一段时间。范围是“838:59:59.000000”“838:59:59.000000”。MySQL显示时间hh: mm: ss(。分数]“格式,但允许将值赋值给时间使用字符串或数字的列。

    一个可选的fsp取值范围从0到6可以指定分数秒精度。值为0表示没有小数部分。如果省略,默认精度为0。

  • 年((4))

    4位数格式的一年。MySQL显示一年YYYY格式,但允许将值赋值给一年使用字符串或数字的列。值显示为19012155,或0000

    有关有关一年输入值的显示格式和解释,请参见第11.2.4节,“年份类型”

    请注意

    从MySQL 8.0.19开始,(4)不建议使用显式显示宽度的数据类型;你应该期望在MySQL的未来版本中删除对它的支持。相反,使用一年没有显示宽度,这有同样的含义。

    MySQL 8.0不支持2位数(2)旧版本MySQL中允许的数据类型。有关转换为4位数字的说明一年,请参阅2位数年份的限制和向4位数年份的迁移,在MySQL 5.7参考手册

SUM ()AVG ()聚合函数不能用于时态值。(它们将值转换为数字,丢失第一个非数字字符之后的所有内容。)要解决这个问题,请转换为数字单位,执行聚合操作,然后再转换回时间值。例子:

选择SEC_TO_TIME(总和(TIME_TO_SEC (time_col)))tbl_name;选择FROM_DAYS(总和(TO_DAYS (date_col)))tbl_name