[一点笔记]日期与时间类型-MySQL数据库

  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’,分钟数不合法)。
这里写图片描述
这里写图片描述

4、可以使用系统日期函数向TIME字段插入值。(CURRENT_TIME、NOW())
这里写图片描述

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

这里写图片描述

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

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格式的值返回,具体格式根据函数所在语境而定。
这里写图片描述

2、获取当前日期和时间的函数
CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE(),均返回当前时间和日期。
这里写图片描述

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

使用FROM_UNIXTIME(date)函数把UNIX时间戳转换为普通格式的时间。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012393192/article/details/78608957