时间类型

表1 MySQL日期数据类型
日期类型 存储空间 日期格式 日期范围
datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038-12-31 23:59:59
date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31
year 1 bytes YYYY 1901 ~ 2155

timestamp

  • timestamp值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。

  • timestamp值显示尺寸的格式如下表所示:

    列类型 显示格式
    timestamp(14) yyyymmddhhmmss
    timestamp(12) yymmddhhmmss
    timestamp(10) yymmddhhmm
    timestamp(8) yyyymmdd
    timestamp(6) yymmdd
    timestamp(4) yymm
    timestamp(2) yy
  • 最常见的显示尺寸是6、8、12、和14.

  • 你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。

  • 列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数,如:

    表1 强制字段长度
    定义字段长度 强制字段长度
    timestamp(0) timestamp(14)
    timestamp(15) timestamp(14)
    timestamp(1) timestamp(2)
    timestamp(5) timestamp(6)
  • 所有的timestamp列都有同样的存储大小

  • 使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸

  • 不合法的日期,将会被强制为0存储

int类型:

一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255
TINYINT[(M)] [UNSIGNED] [ZEROFILL]

一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295
INT[(M)] [UNSIGNED] [ZEROFILL]

一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615
BIGINT[(M)] [UNSIGNED] [ZEROFILL]

浮点型:

FLOAT[(M,D)] [ZEROFILL]
一个小(单精密)浮点数字。不能无符号。允许的值是
-3.402823466E+38到-1.175494351E-38
0
1.175494351E-38到3.402823466E+38

DOUBLE[(M,D)] [ZEROFILL]
REAL[(M,D)] [ZEROFILL]
一个正常大小(双精密)浮点数字。不能无符号。允许的值是
-1.7976931348623157E+308到-2.2250738585072014E-308
0
2.2250738585072014E-308到1.7976931348623157E+308

DECIMAL[(M[,D])] [ZEROFILL]
NUMERIC(M,D) [ZEROFILL]
一个未压缩(unpack)的浮点数字。不能无符号
行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符