mysql allow_invalid_dates_mysql的sql_mode设置

ALLOW_INVALID_DATES: 字母意思允许不合法的数据。不对日期做全面的检查,仅仅检查月份是否在1~12之间,天数是否在1~31之间;这种模式可能是有用的对web应用来说去获取年,月,日在三个不同的字段并且准确存储用户的输入数值,没有验证数据的合法性。这种模式对date和datetime类型有作用,但是对timestamp类型不起作用,timestamp总是要合法的数据。当ALLOW_INVALID_DATES启用时,服务端要求年和月时合法的。如果strict模式禁用,不合法的数据如"2004-04-31"被存储为"0000-00-00"并且审查警告;若严格模式启用则会生成错误。(最后这一句我确定没有翻译错,但是测试的时候,数据时原样插入的,没有转换为0000-00-00)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

root@testdb 06:19:08>create tabletb2(l1 date);

Query OK,0 rows affected (0.22sec)

root@testdb 06:23:23>set session sql_mode="ALLOW_INVALID_DATES";

Query OK,0 rows affected, 1 warning (0.00sec)

root@testdb 06:23:41>insert into tb2 values("2012-02-30");

Query OK,1 row affected (0.00sec)

root@testdb 06:23:45>select * fromtb2;+------------+

| l1 |

+------------+

| 2012-02-30 |

+------------+

1 row in set (0.00sec)

root@testdb 06:23:56>insert into tb2 values("2012-04-31");

Query OK,1 row affected (0.09sec)

root@testdb 06:24:44>select * fromtb2;+------------+

你可能感兴趣的:(mysql)