diff --git a/mysql-test/main/func_extract.result b/mysql-test/main/func_extract.result index cab0d1852708e..c5c2b9fb4e6ca 100644 --- a/mysql-test/main/func_extract.result +++ b/mysql-test/main/func_extract.result @@ -367,7 +367,9 @@ EXTRACT(DAY FROM '01-02-03') 3 SELECT EXTRACT(DAY FROM '24:02:03T'); EXTRACT(DAY FROM '24:02:03T') -3 +1 +Warnings: +Warning 1292 Truncated incorrect time value: '24:02:03T' SELECT EXTRACT(DAY FROM '24-02-03'); EXTRACT(DAY FROM '24-02-03') 3 @@ -380,39 +382,69 @@ EXTRACT(DAY FROM '11111') SELECT TIME('2001-01-01T'), TIME('2001-01-01T '); TIME('2001-01-01T') TIME('2001-01-01T ') 00:00:00 00:00:00 +Warnings: +Warning 1292 Truncated incorrect date value: '2001-01-01T' +Warning 1292 Truncated incorrect date value: '2001-01-01T ' SELECT TIME('2001/01/01T'), TIME('2001/01/01T '); TIME('2001/01/01T') TIME('2001/01/01T ') 00:00:00 00:00:00 +Warnings: +Warning 1292 Truncated incorrect date value: '2001/01/01T' +Warning 1292 Truncated incorrect date value: '2001/01/01T ' SELECT TIME('2001:01:01T'), TIME('2001:01:01T '); TIME('2001:01:01T') TIME('2001:01:01T ') -00:00:00 00:00:00 +838:59:59 838:59:59 +Warnings: +Warning 1292 Truncated incorrect time value: '2001:01:01T' +Warning 1292 Truncated incorrect time value: '2001:01:01T ' SELECT EXTRACT(DAY FROM '2001-01-01T'), EXTRACT(DAY FROM '2001-01-01T '); EXTRACT(DAY FROM '2001-01-01T') EXTRACT(DAY FROM '2001-01-01T ') 1 1 +Warnings: +Warning 1292 Truncated incorrect date value: '2001-01-01T' +Warning 1292 Truncated incorrect date value: '2001-01-01T ' SELECT EXTRACT(DAY FROM '2001/01/01T'), EXTRACT(DAY FROM '2001/01/01T '); EXTRACT(DAY FROM '2001/01/01T') EXTRACT(DAY FROM '2001/01/01T ') 1 1 +Warnings: +Warning 1292 Truncated incorrect date value: '2001/01/01T' +Warning 1292 Truncated incorrect date value: '2001/01/01T ' SELECT EXTRACT(DAY FROM '2001:01:01T'), EXTRACT(DAY FROM '2001:01:01T '); EXTRACT(DAY FROM '2001:01:01T') EXTRACT(DAY FROM '2001:01:01T ') -1 1 +83 83 +Warnings: +Warning 1292 Truncated incorrect time value: '2001:01:01T' +Warning 1292 Truncated incorrect time value: '2001:01:01T ' SELECT TIME('2001:01:01T'), TIME('2001:01:01T '); TIME('2001:01:01T') TIME('2001:01:01T ') -00:00:00 00:00:00 +838:59:59 838:59:59 +Warnings: +Warning 1292 Truncated incorrect time value: '2001:01:01T' +Warning 1292 Truncated incorrect time value: '2001:01:01T ' SELECT EXTRACT(HOUR FROM '2001-01-01T'), EXTRACT(HOUR FROM '2001-01-01T '); EXTRACT(HOUR FROM '2001-01-01T') EXTRACT(HOUR FROM '2001-01-01T ') 0 0 +Warnings: +Warning 1292 Truncated incorrect date value: '2001-01-01T' +Warning 1292 Truncated incorrect date value: '2001-01-01T ' SELECT EXTRACT(HOUR FROM '2001/01/01T'), EXTRACT(HOUR FROM '2001/01/01T '); EXTRACT(HOUR FROM '2001/01/01T') EXTRACT(HOUR FROM '2001/01/01T ') 0 0 +Warnings: +Warning 1292 Truncated incorrect date value: '2001/01/01T' +Warning 1292 Truncated incorrect date value: '2001/01/01T ' SELECT EXTRACT(HOUR FROM '2001:01:01T'), EXTRACT(HOUR FROM '2001:01:01T '); EXTRACT(HOUR FROM '2001:01:01T') EXTRACT(HOUR FROM '2001:01:01T ') -0 0 +9 9 +Warnings: +Warning 1292 Truncated incorrect time value: '2001:01:01T' +Warning 1292 Truncated incorrect time value: '2001:01:01T ' # This still parses as DATE and returns NULL (without trying TIME) SELECT EXTRACT(DAY FROM '100000:02:03T'); EXTRACT(DAY FROM '100000:02:03T') -NULL +4166 Warnings: -Warning 1292 Incorrect interval value: '100000:02:03T' +Warning 1292 Truncated incorrect time value: '100000:02:03T' SELECT EXTRACT(DAY FROM '100000/02/03'); EXTRACT(DAY FROM '100000/02/03') NULL diff --git a/mysql-test/main/func_time.result b/mysql-test/main/func_time.result index b4bca9cffe0fa..a24507d431cb3 100644 --- a/mysql-test/main/func_time.result +++ b/mysql-test/main/func_time.result @@ -6253,6 +6253,9 @@ Warning 1292 Truncated incorrect time value: '1 2 ' SELECT TIME('2001-01-01T'), TIME('2001-01-01T '); TIME('2001-01-01T') TIME('2001-01-01T ') 00:00:00 00:00:00 +Warnings: +Warning 1292 Truncated incorrect date value: '2001-01-01T' +Warning 1292 Truncated incorrect date value: '2001-01-01T ' SELECT TIME('901-01-01T1'), TIME('901-01-01T10'); TIME('901-01-01T1') TIME('901-01-01T10') 01:00:00 10:00:00 diff --git a/mysql-test/main/strict.result b/mysql-test/main/strict.result index a77afb2512f8a..3781d7dd5e5fe 100644 --- a/mysql-test/main/strict.result +++ b/mysql-test/main/strict.result @@ -27,6 +27,10 @@ INSERT INTO t1 VALUES ('59'); ERROR 22007: Incorrect date value: '59' for column `test`.`t1`.`col1` at row 1 set @@sql_mode='STRICT_ALL_TABLES'; INSERT INTO t1 VALUES('2004-01-03'),('2004-0-31'); +INSERT INTO t1 VALUES('2004-01-01Q'); +ERROR 22007: Incorrect date value: '2004-01-01Q' for column `test`.`t1`.`col1` at row 1 +INSERT INTO t1 VALUES('2004-01-01T'); +ERROR 22007: Incorrect date value: '2004-01-01T' for column `test`.`t1`.`col1` at row 1 set @@sql_mode='STRICT_ALL_TABLES,NO_ZERO_IN_DATE'; INSERT INTO t1 VALUES('2004-0-30'); ERROR 22007: Incorrect date value: '2004-0-30' for column `test`.`t1`.`col1` at row 1 diff --git a/mysql-test/main/strict.test b/mysql-test/main/strict.test index ce02003e08820..cfff10e62e3fe 100644 --- a/mysql-test/main/strict.test +++ b/mysql-test/main/strict.test @@ -41,6 +41,10 @@ INSERT INTO t1 VALUES ('59'); # Test the different related modes set @@sql_mode='STRICT_ALL_TABLES'; INSERT INTO t1 VALUES('2004-01-03'),('2004-0-31'); +--error 1292 +INSERT INTO t1 VALUES('2004-01-01Q'); +--error 1292 +INSERT INTO t1 VALUES('2004-01-01T'); set @@sql_mode='STRICT_ALL_TABLES,NO_ZERO_IN_DATE'; --error 1292 INSERT INTO t1 VALUES('2004-0-30'); diff --git a/sql-common/my_time.c b/sql-common/my_time.c index 3d96695cd5c52..b4667b69e5138 100644 --- a/sql-common/my_time.c +++ b/sql-common/my_time.c @@ -168,7 +168,7 @@ static int get_date_time_separator(uint *number_of_fields, if (s >= end) return 0; - if (*s == 'T') + if (*s == 'T' && s + 1 < end) { (*str)++; return 0;