MySQL数据类型--日期时间
一、博客前言
自接触学习MySQL已有一段时间了,对于MySQL的基础知识还是略懂略懂的。在这一路学习过来,每次不管看书还是网上看的资料,对于MySQL数据类型中的时间日期类型总是一扫而过,不曾停下来认认真真的研究学习。最近在图书馆借了一本关于MysQL的书籍,打算全面的学习研究一遍。
在之前,我对于时间日期数据类型不怎么感冒,也没怎么用过这一类型。在我的做项目里用到存贮时间的数据,我都是采用int整型数据类型来存储,即是存储时间戳。但是在后面学习MySQL优化的时候,就有一个原则就是存储数据时应采用最小占用空间的数据类型。int类型是4个字节,TIMESTAMP也是4个字节,但是在需要使用日期时,时间戳还需要进一步转换,而TIMESTAMP类型数据就不需要了。
所以说认真学习了解每一个知识点是必要的!
二、时间日期数据类型总概况
MySQL中有多种表示时间日期的数据类型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等。每一种数据类型都有存储的时间日期格式、以及取值范围,因此在使用时间日期数据类型的时候需要选取最佳的数据类型。
下图列出了几种数据类型:

三、细讲
1、YEAR
year用于存储年,存储时只需要一个字节,插入数据时可以使用各种格式指定YEAR值。
常见的插入格式解析:
a、四位字符串或者数字格式,范围为“1901”~“2155”,多少即为多少。
b、两位字符串格式,范围为“00”~“99”,"00"~"69"被转化为20**(例如:“16”转化为“2016”),“70”~“99”被转化为19**
c、两位数字格式,范围为1~99,1~69被转化为20**(例如:1转化为2001),70~99被转化为19**
2、TIME
time用于存储时间信息,存储时需要三个字节。从上图中可以了解到time的存储格式,还有数据范围。其中HH小时大于一天的24小时,可以为八百多的数字。这是因为这个类型不仅仅可以用于存储一天的某个时间还可以记录一段时间的间隔。所以小时就24小时。插入数据可以有多种格式。
常见插入格式解析:
a、"D HH:MM:SS"格式字符串格式。还可以使用非严格语法插入,例如“HH:MM:SS”、"D HH:SS"、“MM:SS”、"D HH"、”SS“(D表示天,取值范围为0~34)。在存入数据库是D将会被转换为D*24+HH,最终将当做小时进行入库存储。
b、”HHMMSS“没间隔的字符串格式或者HHMMSS没间隔的数字格式,非严格语法插入可以为,MMSS、SS、”MMSS“等等。要注意的是:1、这两种插入格式采用非严格语法的时候(即为时分秒不完整,只有时分等等),最右边的数据将默认为秒数,例如插入2318时,最终入库为002318。 2、分钟与秒数的数据要有实际意义,假若·MM为65超过59,那么将会发生错误。
3、DATE
date用于存储日期,没有时间部分,存储时需要三个字节。插入数据可以有多种格式。
常见插入格式解析:
a、”YYYY-MM-DD“、"YYYYMMDD"。
b、”YY-MM-DD“、”YYMMDD“,以两位数字来插入年份,这里主要区别”00~69”与“70~99”,前者表示20**,后者表示19**。
c、数字格式YY-MM-DD、YYMMDD,两位数字插入年份,区别于上面一样。
d、使用函数插入,CURRENT_DATE()、NOW()
4、DATETIME
datetime用于存储日期时间数据,存储时需要八个字节。插入数据可以有多种格式。
常见插入格式解析:
a、”YYYY-MM-DD HH:MM:SS“、"YYYYMMDDHHMMSS",最终插入数据库都为2017-01-17 23:55:59格式。
b、”YY-MM-DD HH:MM:SS“、"YYMMDDHHMMSS",两位数字插入年份,主要区分“00~69”与“70~99”,区别于上面一样。
c、数字格式插入,YYYYMMDDHHMMSS、YYMMDDHHMMSS,两位数字插入年份问题与上述一致。
5、TIMESTAMP
timestamp用于存储日期时间数据,与datetime存储数据格式一样,二者主要区别在于取值范围。timestamp存储需要四个字节,它的取值范围为“1970-01-01 00:00:01” UTC ~ “2038-01-19 03:14:07” UTC,而datetime取值范围为“1000-01-01 00:00:00” ~ "9999-12-31 23:59:59"(UTC:Coordinated Universal Time 世界时间标准) 。插入格式也有多种。
常见插入格式解析:
与DATETIME一致,可以参考上面。
四、小结
了解MySQL的日期时间数据类型对于选取一种适合存储类型是很有必要的。假若只有存储年份可以选取YEAR、仅存储时间可以选择TIME、又或者需要存储完整日期时间,那么可以根据实际情况选取DATATIME或者TIMESTAMP数据类型。
(以上是自己的一些见解,若有不足或者错误的地方请各位指出)
作者:壹叶随风
声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接。
MySQL数据类型--日期时间的更多相关文章
- MySQL数据类型--日期和时间类型
MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...
- MySQL之日期时间类型
mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 D ...
- MySQL常用日期时间函数
日期和时间函数: MySQL服务器中的三种时区设置: ①系统时区---保存在系统变量system_time_zone ②服务器时区---保存在全局系统变量global.time_zone ③每个客户端 ...
- MySQL之日期时间函数
1.NOW() 用法:显示当前日期和时间 举例: mysql> select NOW(); +---------------------+ | NOW() | +-------------- ...
- mysql 关于日期时间的字段类型
mysql日期和时间类型 mysql有5种表示时间值的日期和时间类型,分别为.DATE,TIME,YEAR,DATETIME,TIMESTAMP. TIMESTAMP类型有专有的自动更新特性, TIM ...
- 【Mysql】日期时间格式化
1.日期转成指定格式:DATE_FORMAT(date, format) 2.int型时间转成指定格式:FROM_UNIXTIME(unix_timestamp,format) 根据format字符串 ...
- mysql 根据日期时间查询数据
mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...
- Mysql中日期时间型解析
- MySQL数据类型——数值类型
1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...
随机推荐
- dom元素循环绑定事件的技巧
以前总觉得自己写的代码不太规范,尤其是写原生的时候.举个例子: 要为页面上所有".a"的元素绑定事件,当然了用jquery很方便:$('.a').bind("click& ...
- springMVC 静态文件 访问
1. 新建web project 2. 导入所需jar包 3. 更改web.xml <?xml version="1.0" encoding="UTF-8" ...
- <meta http-equiv="refresh" content="0; url=">
原文:http://www.cnblogs.com/net2/archive/2010/11/29/1890874.html 页面定期刷新,如果加url的,则会重新定向到指定的网页,content后面 ...
- python之requests模块
1.安装 pip install requests 2.基本用法 就是以某种HTTP方法向远端服务器发送一个请求而已 import requests r = requests.get('https:/ ...
- 基于css3的环形动态进度条(原创)
基于css3实现的环形动态加载条,也用到了jquery.当时的想法是通过两个半圆的转动,来实现相应的效果,其实用css3的animation也可以实现这种效果.之所以用jquery是因为通过jquer ...
- 推荐!国外程序员整理的Java资源大全
http://www.importnew.com/14429.html 本文由 ImportNew - 唐尤华 翻译自 github akullpp.欢迎加入翻译小组.转载请见文末要求. 构建 这里搜 ...
- hibernate--ID生成策略--XML
xml生成id, a) generator b) 常用4个: native, uuid, identity, sequence 1. 新建java项目, 引入hibernate, junit(use ...
- SSL 双向认证
利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件.下面以C/S模式说明证 ...
- LPC1788做U盘的时候对命令的响应
首先是对于端点的数据处理 #ifndef __USBEP2_H_ #define __USBEP2_H_ #include "usb.h" #include "usbhw ...
- 2016年最全面的VR资源盘点,不只有VR视频播放器还有具体到步骤的VR资源
2016年过去了,有多少人开始使用VR来观看我们喜欢的视频资源呢?比传统视频更高的沉浸感,甚至在VR眼镜的视角中,自己仿佛化生成视频中的主角一般.然而,这种体验只有VR眼镜还是不行的,还需要有一个VR ...