可以看到,第二次在插入记录的时候,数据超出了范围,原因是107010的分钟部分超过了60,分钟部分是不会超过60的,查看结果:
SELECT * FROM tmp4;
由结果可以看到,’101112’被转换为10:11:12;111213被转换为11:12:13;’0’被转换为00:00:00;107010因为是不合法的值,因此插入00:00:00。
也可以使用系统日期函数向TIME字段列插入值。
向tmp4表中插入系统当前时间,SQL语句如下:
首先删除表中的数据:
DELETE FROM tmp4;
向表中插入数据:
INSERT INTO tmp4 values (CURRENT_TIME) ,(NOW());
查看结果:
SELECT * FROM tmp4;
由结果可以看到,获取系统当前的日期时间插入到TIME类型列,都是系统当前的日期时间值。
DATE类型数据测试案例:创建数据表tmp5,定义数据类型为DATE的字段d,向表中插入“YYYY-MM-DD”和“YYYYMMDD”字符串格式日期,SQL语句如下:
首先创建表tmp5:
CREATE TABLE tmp5(d DATE);
向表中插入“YYYY-MM-DD”和“YYYYMMDD”格式日期:
INSERT INTO tmp5 values('1998-08-08'),('19980808'),('20101010');
查看插入结果:
SELECT * FROM tmp5;
可以看到,各个不同类型的日期值都正确的插入到了数据表中。DATE占用3字节,可显示的日期范围为“1000-01-01”到“9999-12-31”。
向tmp5表中插入“YY-MM-DD”和“YYMMDD”字符串格式日期,SQL语句如下:
首先删除表中的数据:
DELETE FROM tmp5;
向表中插入“YY-MM-DD”和“YYMMDD”格式日期:
INSERT INTO tmp5 values ('99-09-09'),( '990909'), ('000101') ,('111111');
查看插入结果:
SELECT * FROM tmp5;
对于插入的最后一个值,为什么不是1911-11-11或者2111-11-11之类的值呢?可以看到数据库将其视为离现在最近的一个年份,这可能不是一个非常好的习惯。如果没有特别的条件和要求,还是在输入时按照标准的“YYYY-MM-DD HH:MM:SS”格式来进行。
向tmp5表中插入YY-MM-DD和YYMMDD数字格式日期,SQL语句如下:
首先删除表中的数据:
DELETE FROM tmp5;
向表中插入YY-MM-DD和YYMMDD数字格式日期:
INSERT INTO tmp5 values (99-09-09),(990909), ( 000101) ,( 111111);
查看插入结果:
SELECT * FROM tmp5;
可以看到,插入的第一条数据有一个警告,但是插入成功,插入的值变为了0000-00-00
向tmp5表中插入系统当前日期,SQL语句如下:
首先删除表中的数据:
DELETE FROM tmp5;
向表中插入系统当前日期:
INSERT INTO tmp5 values( CURRENT_DATE() ),( NOW() );
查看插入结果:
SELECT * FROM tmp5;