跟王老师学MySQL:MySQL数据类型之日期与时间类型
主讲教师:王少华 QQ群号:483773664
学习内容
YEAR类型的特点及使用
TIME类型的特点及使用
DATE类型的特点及使用
DATETIME类型的特点及使用
TIMESTAMP类型的特点及使用
MySQL表示日期和时间的数据类型有以下几种:
1.YEAR类型
2.TIME类型
3.DATE类型
4.DATETIME类型
5.TIMESTAMP类型
一、Year类型
(一)简介
year使用一个字符串来表示年份
MySQL中以YYYY形式显示year类型的值
取值范围:1901-2155
(二)举例
1 、创建一张表1
2
3
4
5create table history(
idint primary key auto_increment,
titlevarchar(10),
yyear
);
2 插入语正常值1insert into history(title,y)values(‘中华人民共和国成立‘,‘1949‘);
3、插入小于1901值1insert into history(title,y)values(‘史前文明‘,‘1900‘);
4、插入2位数的值
1-69 转换为2001-2069
70-99 转换为1970-1999
0 转换为00001
2
3insert into history(title,y)values(‘1-69‘,23);
insert into history(title,y)values(‘70-99‘,85);
insert into history(title,y)values(‘0‘,0);
5、0和‘0’的区别
0 表示 0000
‘0‘ 表示20001
2insert into history(title,y)values(‘二个零的区别‘,0);
insert into history(title,y)values(‘二个零的区别‘,‘0‘);
二、Date类型
(一)简介
使用4个字符来表示日期
以YYYY-MM-DD来表示日期的值。YYYY表示年份,MM表示月份,DD表示日
Date类型的表示范围:1000-01-01到9999-12-31
(二)举例
1、history表添加一列 d date1alter table historyadd ddate;
2、输入格式YYYY
可以有多种:
YYYY-MM-DD
YYYYMMDD
YYYY/MM/DD
YYYY.MM.DD1
2
3
4
5insert into history(title,d)values(‘YYYY-MM-DD‘,‘2016-6-22‘);
insert into history(title,d)values(‘YYYYMMDD‘,‘20160622‘);
insert into history(title,d)values(‘YYYY/MM/DD‘,‘2016/06/22‘);
insert into history(title,d)values(,);
insert into history(title,d)values(‘YYYY.MM.DD‘,‘2016.06.22‘);
3、输入格式YY
规则跟Year类型相同
1-69 2001-2069
70-991970-19991insert into history(title,d)values(‘YY.MM.DD‘,‘15.06.22‘);
4 获得当前日期
current_Date
now()1
2insert into history(title,d)values(‘当前日期:‘,current_date);
insert into history(title,d)values(‘当前日期:‘,now());
三、Time类型
(一)简介
Time类型使用3个字节来表示
MySQL中以HH:MM:SS的形式显示TIME类型的值,其中HH表示时,MM表示分,SS表示秒
表示范围:-838:59:59~838:59:59
(二)赋值
1、添加一列 t time1alter table history add ttime;
2、D HH:MM:SS
D表示天数,小时的值等于(D*24+HH),比如‘2 11:30:59 显示59:30:591insert into history(title,t)values(‘D HH:MM:SS‘,‘2 11:30:50‘);
3 HHMMSS1insert into history(title,t)values(‘HHMMSS‘,‘131313‘);
4 如果分钟和秒钟大于59,会报错1insert into history(title,t)values(‘大于59‘,‘126767‘);
5 0和’0‘ --> 00:00:001insert into history(title,t)values(‘0‘,‘0‘);
6 获得当前系统时间
current_time
now()1
2insert into history(title,t)values(‘获得当前时间‘,current_time);
insert into history(title,t)values(‘获得当前时间‘,now());
四、DateTime类型
(一)简介
DATETIME类型,从形式上可以看成DATE类型和TIME类型的组合
DateTime类型使用8个字节来表示日期和时间
MySQL中以YYYY-MM-DD HH:MM:SS 的形式来显示DATETIME类型的值
(二)输入
1、添加列1alter table historyadd dt datetime;
2 YYYY-MM-DD HH:MM:SS
也可以无分隔符
分隔符可以是多少形式1
2insert into history(title,dt)values(‘无分隔符‘,‘20160622200422‘);
insert into history(title,dt)values(‘@分隔符‘,);
3 YY-MM-DD HH:MM:SS
00-69 -->2000-2069
70--99-->1970-1999
4、0--->0000-00-00 00:00:00
5 获得当前系统日期和时间1insert into history(title,dt)values(‘日期和时间‘,now());
五、Timestamp类型
(一)简介
TIMESTAMP类型使用4个字节来表示日期和时间
范围:1970-01-01 08:00:01--2038-01-19 11:14:07
显示跟输入DATETIME一样
(二)TIMESTAMP与DateTime的不同之处
1 添加一列1alter table historyadd tstimestamp;
2 获得当前系统日期与时间
datetime now()
timestamp current_timestamp1insert into history(title,dt,ts)values(‘获得当前日期与时间‘,now(),current_timestamp);
3 对null或无输入的处理
datetime,输入null,存储null;
不输入,存储null
timestamp,输入null,存储当前系统日期和时间
不输入,存储当前系统日期和时间1
2insert into history(title,dt,ts)values(‘null或无输入‘,null,null);
insert into history(title)values(‘null或无输入‘);
4 timestamp类型范围小,没有datetime类型范围大
因此,若需要的时间范围比较大,还是选择datetime类型比较安全
六、教学视频