27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
(1)每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
类型 | 大小 ( bytes) | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3字节 | 1000-01-01/9999-12-31 | YYYY-MM-DD表示年月日 | 日期值 |
time | 3字节 | '-838:59:59'/'838:59:59' | HH:MM:SS表示一天中的时间 | 时间值或持续时间 |
year | 1字节 | 1901/2155 | YYYY | 年份值 |
datetime | 8字节 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS表示年月日时分秒 | 混合日期和时间值 |
timestamp | 4字节 | 时间戳1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07;原因在于timestamp占用4个字节,和整形的范围一样,2038年01月19日11:14:07以后的秒数就超过了4个字节的长度 | YYYYMMDD HHMMSS表示时间戳 | 混合日期和时间值,时间戳 |
格式:年-月-日 小时:分钟:秒。
场景:用在你需要同时包含日期和时间信息的值时
支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
场景:用在你仅需要日期值时,没有时间部分。
格式:年-月-日
mysql> create table stu14( -> t1 datetime, -- 日期时间 -> t2 date -- 日期 -> ); Query OK, 0 rows affected (0.05 sec) -- 插入测试数据 mysql> insert into stu14 values ('2019-01-15 12:12:12','2019-01-15 12:12:12'); Query OK, 1 row affected, 1 warning (0.00 sec) -- 查询 mysql> select * from stu14; +---------------------+------------+ | t1 | t2 | +---------------------+------------+ | 2019-01-15 12:12:12 | 2019-01-15 | +---------------------+------------+ 1 row in set (0.00 sec)
timestamp和datetime类型表现上是一样的,他们的区别在于:
datetime从1000到9999,而timestamp从1970年~2038年(原因在于timestamp占用4个字节,和整形的范围一样,2038年01月19日11:14:07以后的秒数就超过了4个字节的长度)
mysql> create table stu15( -> t1 timestamp -> ); Query OK, 0 rows affected (0.06 sec) mysql> insert into stu15 values ('2038-01-19 11:14:07'); Query OK, 1 row affected (0.00 sec)
表示一天中的时间,它可以表示时间,也可以表示时间间隔。范围是:-838:59:59~838:59:59
格式:小时-分-秒或 天-小时-分-秒
mysql> create table stu17( -> t1 time -> ); Query OK, 0 rows affected (0.02 sec) mysql> insert into stu17 values ('12:12:12'); Query OK, 1 row affected (0.00 sec) mysql> insert into stu17 values ('212:12:12'); Query OK, 1 row affected (0.00 sec) mysql> insert into stu17 values ('-212:12:12'); Query OK, 1 row affected (0.00 sec) mysql> insert into stu17 values ('839:00:00'); -- 不在范围报错 ERROR 1292 (22007): Incorrect time value: '839:00:00' for column 't1' at row 1 -- time支持以天的方式来表示时间间隔 mysql> insert into stu17 values ('10 10:25:25'); -- 10天10小时25分25秒 Query OK, 1 row affected (0.00 sec) mysql> select * from stu17; +------------+ | t1 | +------------+ | 12:12:12 | | 212:12:12 | | -212:12:12 | | 250:25:25 | +------------+ 4 rows in set (0.00 sec)
只能表示1901~2155之间的年份,因为只占用1个字节,只能表示255个数
mysql> create table stu16( -> y1 year -> ); Query OK, 0 rows affected (0.08 sec) mysql> insert into stu16 values (2155); Query OK, 1 row affected (0.00 sec)
本站内容均为小米原创,转载请注明出处:小米技术社区>> mysql数据类型之日期时间型;date,time,year,datetime,timestamp