MySQL中有多种表示日期的数据类型,主要有:DATETIME、DATE、TIMESTAMP、TIME和YEAR。当只记录年信息的时候,可以只使用YEAR类型,而没有必要使用DATE。每一个类型都有合法的取值范围,当指定不合法的值时系统将插入0。
  下面列出了MySQL中的日期类型:

日期与时间类型

类型名称

日期格式

日期范围

存储需求

TEAR

YYYY

1901~2155

1字节

TIME

HH:MM:SS

-838:59:59~838:59:59

3字节

DATE

YYYY-MM-DD

1000-01-01~9999-12-3

3字节

DATETIME

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00~9999-12-31 23:59:59

8字节

TIMESTAMP

YYYY-MM-DD HH:MM:SS

1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 UTC

4字节


1、 YEAR类型字段可以插入数值类型或字符串类型

insert into tmp (year) values (2017), ('2017');

2、TIME的取值范围为-838:59:59~838:59:59,小时部分如此大是因为TIME不仅可以用于表示一天的时间(小于24小时),还可以表示某两个事件之间的时间间隔。

3、TIME的格式可以是:‘D HH:MM:SS’、’HH:MM:SS’、’HH:MM’、’D HH:MM’、’D HH’或‘SS’。D表示日可以取0-34之间的值,在插入数据库时,D被转换为小时保存。TIME也可以是‘HHMMSS’格式的字符串或数值,但必须是有意义的时间。若不合法的(如‘119912’,分钟数不合法)。

mysql数据类型为日期型 mysql数据库日期类型_字符串


mysql数据类型为日期型 mysql数据库日期类型_字符串_02

4、可以使用系统日期函数向TIME字段插入值。(CURRENT_TIME、NOW())

mysql数据类型为日期型 mysql数据库日期类型_mysql数据类型为日期型_03

5、关于DATE类型,以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示的日期。可以使用两位的年值,MySQL会将‘00-69’范围的年值转换为‘2000-2069’;‘70-99’范围的年值转换为‘1970-1999’;同样,也可以向表中插入系统当前日期。(CURRENT_DATE()、NOW())

mysql数据类型为日期型 mysql数据库日期类型_数据库_04

mysql数据类型为日期型 mysql数据库日期类型_mysql_05

6、DATETIME类型,形如‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’具体规则和上面几种类型相似。也可以通过NEW()插入当前系统日期。

mysql数据类型为日期型 mysql数据库日期类型_mysql_06

7、TIMESTAMP的显示格式与DATETIME相同,显示宽度固定在19个字符,日期格式为YYYY-MM-DD HH:MM:SS,在存储时需要4个字节,但是TIMESTAME列的取值范围小于DATETIME的取值范围,为’1970-01-01 00:00:01’ UTC~’2038-01-19 03:14:07’ UTC,UTC为世界标准时间,因此在插入数据时,要保证在合法的取值范围内。

MySQL中的日期和时间函数

1、获取当前时间的函数和获取当前日期的函数

CURDATE()和CURRENT_DATE()作用相同,将当前日期按照‘YYYY-MM-DD’或YYYYMMDD格式的值返回,具体格式根据函数所在语境而定。

mysql数据类型为日期型 mysql数据库日期类型_存储_07

2、获取当前日期和时间的函数

CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE(),均返回当前时间和日期。

mysql数据类型为日期型 mysql数据库日期类型_字符串_08

3、UNIX时间戳函数

UNIX_TIMESTAMP(date),返回一个Unix时间戳(从1970-01-01 00:00:00起始至date时间的秒数),date可以是DATE字符串、DATETIME字符串TIMESTAMP或YYMMDD/YYYYMMDD格式的数字,若为空则返回一个到当前时间的总秒数。

mysql数据类型为日期型 mysql数据库日期类型_mysql数据类型为日期型_09

使用FROM_UNIXTIME(date)函数把UNIX时间戳转换为普通格式的时间。

mysql数据类型为日期型 mysql数据库日期类型_mysql数据类型为日期型_10