mysql数据库中表⽰时间段类型_MySQL数据类型--⽇期和时间
类型
MySQL中的多种时间和格式数据类型
⽇期和时间类型是为了⽅便在数据库中存储⽇期和时间⽽设计的。MySQL中有多种表⽰⽇期和时间的数据类型。
其中,year类型表⽰时间,date类型表⽰⽇期,time类型表⽰时间,datetime和timestamp表⽰⽇期和时间。实际情况,最后2种使⽤的⽐较多。
具体的⽇期和时间类型如下:
OK,现在来仔细的整理下上⾯说到的⼏种类型:
year类型
year类型使⽤1个字节来表⽰年份,mysql中以YYYY的形式来显⽰year类型的值。
给year类型的字段赋值的表⽰⽅法如下:
1,使⽤4位字符串和数字表⽰。其范围从1901~~2155。输⼊格式为'YYYY'或YYYY。举个例⼦,输⼊‘2008’或者2008,可直接保存2008。如果超过了范围,就会插⼊0000。
2,使⽤2位字符串表⽰。‘00’~~‘69’转换为2000~~2069,‘70’~~‘99’转换为1970~1999。举个例⼦,输⼊‘35’,year 值会转换成2035,输⼊‘90’,year值会转换成1990。‘0’和‘00’效果⼀样。
3,使⽤2位数字表⽰。1~~69转换为2001~~2069,70~~99转换为1970~~1999。不举例⼦了,注意,2位数字和2位字符串是不⼀样的。如果插⼊0,转换后的year值不是2000,⽽是0000。
OK,针对上⾯的例⼦,我们来实际操作下数据库。
CREATE TABLE `linkinframe`.`test` (
`id` INT NOT NULL,
`a` YEAR NULL,
PRIMARY KEY (`id`));
现在往该表中插⼊⼏条数据:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('1', 1989);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('2', 1990);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('3', 1900);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('4', 2156);
OK,现在数据库显⽰如下:
year类型是使⽤总结:
1,顾名思义,我们⼀般⽤year类型来表⽰年份,所以在对该字段进⾏相关操作的时候,最好使⽤4位字符串或者数字表⽰,不要使⽤2位的字符串和数字。
2,有的时候可能会插⼊0或者‘0’。这⾥要严格区分0和‘0’,如果向year类型的字段插⼊0,存⼊该字段的年份是0000;如果向year 类型的字段插⼊‘0’,存⼊的年份是2000。
当然字符串‘0’和‘00’和‘000’是⼀样的效果,但是‘0000’效果不⼀样。因为如果是4个0的话就使⽤了year类型赋值的第⼀种⽅式,也就是超过了year类型的范围,插⼊了0。
关于这点这⾥来举⼀个实际的例⼦吧。
建表语句如下:
CREATE TABLE `linkinframe`.`test` (
`id` INT NOT NULL,queueuserworkitem优先级
`a` YEAR NULL,
PRIMARY KEY (`id`));
现在往该表中插⼊⼏条数据:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('1', 0);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('2', 00);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('3', 000);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('4', 0000);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('5', '0');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('6', '00');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('7', '000');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('8', '0000');
OK,现在数据库显⽰如下:
time类型
time类型使⽤3个字节来表⽰时间。MySQL中以HH:MM:SS的形式显⽰Time类型的值。其中,HH表⽰时;MM表⽰分,取值范围为0~~59;SS表⽰秒,取值范围是0~~59。
Time类型的范围可以从‘-838:59:59’~~‘838:59:59’。虽然,⼩时的范围是0~~23,但是为了表⽰某种特殊需要的时间间隔,将Time类型的范围扩⼤了。⽽且还⽀持了负值。
Time类型的字段赋值的表⽰⽅法如下:
1,‘D HH:MM:SS’格式的字符串表⽰。其中,D表⽰天数,取值范围是0~~34。保存时,⼩时的值等于(D*24+HH)。举个例⼦,输⼊‘2 11:30:50’,Time类型会转换为59:30:50。
当然。输⼊时可以不严格按照这个格式,也可以是‘HH:MM:SS’,'HH:MM','D HH:MM','D HH','SS'等形式。举个例⼦,输
⼊‘30’,Time类型会⾃动转换为00:00:30。
2,‘HHMMSS’格式的字符串或HHMMSS格式的数值表⽰,例如,输⼊‘123456’,Time类型会转换成12:34:56;输⼊123456,Time类型会转换成12:34:56。如果输⼊0或者‘0’,那么TIME类型会转换为0000:00:00。
3,使⽤current_time或者current_time()或者now()输⼊当前系统时间。
OK,现在我们来实际操作下数据库中Time类型。
建表语句如下:
CREATE TABLE `linkinframe`.`test` (
`id` INT NOT NULL,
`a` TIME NULL,
PRIMARY KEY (`id`));
现在往该表中插⼊⼏条数据:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('1', '1 01:50:50');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('2', '01:50:50');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('3', '50:05');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('4', '1 05:05');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('5', '59');
mysql语句分类INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('6', '66');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('7', '123456');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('8', 123456);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('9', 0);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('10', '0');欧洲最强rapper潮水免费看
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('11', now());
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('12', current_time);leftovers
python是世界上最好的语言INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('13', current_time());
数据库显⽰如下:
关于Time类型的总结:
1,⼀个合法的Time值,如果超出了Time的范围,将被裁为范围最接近的端点。举个例⼦,‘880:00:00’将转换为838:59:59。
2,⽆效的Time值,在命令⾏下是⽆法被插⼊到表中的。举个例⼦,我在这⾥乱输⼊⼀个字符串的值,数据库取值28:00:00成功的插⼊进去啦,MySQL中显⽰如下:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('17', '1 4 4 4 4 65:65')
控制台显⽰如下:1 row(s) affected, 1 warning(s): 1265 Data truncated for column 'a' at row 1。所以在使⽤Time类型⽤来存储时间的时候,最好对格式进⾏⼀下校验,不要随便的格式胡乱的输⼊。
3,如果插⼊的Time值是⽆效的,系统会提⽰报错,即使这个⽆效值被插⼊到表中了,其值也会被转换为00:00:00。举个例⼦,INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('19', '999999');
数据库中取值00:00:00来做插⼊
4,Time类型专门⽤来存储时间数据,⽽且只占3个字节,所以如果只需要记录时间,选择Time类型是最合适的。
Date类型
date类型使⽤4个字节来表⽰⽇期。MySQL中是以YYYY-MM-DD的形式显⽰date类型的值。css手册查询
其中,YYYY表⽰年,MM表⽰⽉,DD表⽰⽇。date类型的范围可以从‘1000-01-01’~~‘9999-12-31’。
给DATE类型的字段赋值的表⽰⽅法如下:
1,‘YYYY-MM-DD’或‘YYYYMMDD’格式的字符串表⽰,这种⽅式可以表达的范围是‘1000-01-01’~‘9999-12-31’。
举个例⼦,⽐如现在我输⼊‘4008-2-8‘,date类型将转换为4008-02-08;输⼊’40080308‘,date类型将转换为4008-03-08。
2,当然,MySQL中还⽀持⼀些不严格的语法格式,任何标点都可以⽤来做间隔符。
如’YYYY/MM/DD‘,’YYYY@MM@DD‘,’YYYY.MM.DD‘等分隔形式。
举个例⼦,输⼊’2011.3.8‘,date类型将转换为2011-03-08。
3,’YY-MM-DD‘或者’YYMMDD‘格式的字符串表⽰,其中’YY‘的取值,’00‘~~’69‘转换为
2000~~2069,’70‘~~’99‘转换为1970~~1999。与year类型类似。
举个例⼦,⽐如现在我输⼊’35-01-02‘,date类型将转换为2035-01-02;输⼊’800102‘,date类型将转换为1980-01-02。
4,同样的,MySQL中也⽀持⼀些不严格的语法格式,⽐如’YY/MM/DD‘,’YY@MM@DD‘,’YY.MM.DD’等分隔形式。例如,输⼊‘89@3@8’,date类型将转换为1989-03-08。
5,YYYYMMDD或YYMMDD格式的数字表⽰。其中,‘YY’的取值,‘00’~~‘69’转换为2000~~2069,‘70’~~‘99’转换为1970~~1999。与year类型类似。
举个例⼦,⽐如现在我输⼊20080808,date类型将转换为2008-08-08;输⼊790808,date类型将转换为1979-08-08;输⼊0,那么date类型会转化为0000-00-00。
6,使⽤current_date或now()来输⼊当前系统时间。
OK,现在我们来实际操作下数据库中的date类型。
建表语句如下:
CREATE TABLE `linkinframe`.`test` (
`id` INT NOT NULL,
`a` DATE NULL,
PRIMARY KEY (`id`));
现在往表中插⼊⼏条数据:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('1', '2008-08-08');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('2', '20080808');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('3', '2008@08@08');
-- 格式出错,所以插⼊0000-00-00
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('4', '2008#0808');
-- 格式没错,但是⼩于了date类型的最⼩值1000,但是数据库还是插进去了,我晕
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('5', '0999-08-08');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('6', '690808');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('7', '700808');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('8', 690808);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('9', 700808);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('10', '0');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('11', 0);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('12', now());
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('13', current_date);
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES ('14', current_date());

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。