Loading mysql-test/r/type_datetime.result +12 −0 Original line number Diff line number Diff line Loading @@ -179,3 +179,15 @@ a 2006-06-06 15:55:55 DROP PREPARE s; DROP TABLE t1; SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)); CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)) 20060810.000000 SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) AS DECIMAL(20,6)); CAST(CAST('2006-08-10 10:11:12' AS DATETIME) AS DECIMAL(20,6)) 20060810101112.000000 SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)); CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)) 20060810101112.000014 SELECT CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6)); CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6)) 101112.098700 mysql-test/r/type_newdecimal.result +8 −0 Original line number Diff line number Diff line Loading @@ -1412,3 +1412,11 @@ i2 count(distinct j) 1.0 2 2.0 2 drop table t1; create table t1(f1 decimal(20,6)); insert into t1 values (CAST('10:11:12' AS date) + interval 14 microsecond); insert into t1 values (CAST('10:11:12' AS time)); select * from t1; f1 20101112000000.000014 101112.000000 drop table t1; mysql-test/t/type_datetime.test +10 −0 Original line number Diff line number Diff line Loading @@ -125,3 +125,13 @@ PREPARE s FROM 'SELECT a FROM t1 WHERE a=(SELECT MAX(a) FROM t1) AND (a="2006060 EXECUTE s; DROP PREPARE s; DROP TABLE t1; # # Bug 19491 (CAST DATE AS DECIMAL returns incorrect result # SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)); SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) AS DECIMAL(20,6)); SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)); SELECT CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6)); mysql-test/t/type_newdecimal.test +8 −0 Original line number Diff line number Diff line Loading @@ -1108,3 +1108,11 @@ insert into t1 values (1,1), (1,2), (2,3), (2,4); select i, count(distinct j) from t1 group by i; select i+0.0 as i2, count(distinct j) from t1 group by i2; drop table t1; create table t1(f1 decimal(20,6)); insert into t1 values (CAST('10:11:12' AS date) + interval 14 microsecond); insert into t1 values (CAST('10:11:12' AS time)); select * from t1; drop table t1; sql/field.cc +7 −0 Original line number Diff line number Diff line Loading @@ -2425,6 +2425,13 @@ int Field_new_decimal::store_decimal(const my_decimal *decimal_value) } int Field_new_decimal::store_time(TIME *ltime, timestamp_type t_type) { my_decimal decimal_value; return store_value(date2my_decimal(ltime, &decimal_value)); } double Field_new_decimal::val_real(void) { double dbl; Loading Loading
mysql-test/r/type_datetime.result +12 −0 Original line number Diff line number Diff line Loading @@ -179,3 +179,15 @@ a 2006-06-06 15:55:55 DROP PREPARE s; DROP TABLE t1; SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)); CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)) 20060810.000000 SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) AS DECIMAL(20,6)); CAST(CAST('2006-08-10 10:11:12' AS DATETIME) AS DECIMAL(20,6)) 20060810101112.000000 SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)); CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)) 20060810101112.000014 SELECT CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6)); CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6)) 101112.098700
mysql-test/r/type_newdecimal.result +8 −0 Original line number Diff line number Diff line Loading @@ -1412,3 +1412,11 @@ i2 count(distinct j) 1.0 2 2.0 2 drop table t1; create table t1(f1 decimal(20,6)); insert into t1 values (CAST('10:11:12' AS date) + interval 14 microsecond); insert into t1 values (CAST('10:11:12' AS time)); select * from t1; f1 20101112000000.000014 101112.000000 drop table t1;
mysql-test/t/type_datetime.test +10 −0 Original line number Diff line number Diff line Loading @@ -125,3 +125,13 @@ PREPARE s FROM 'SELECT a FROM t1 WHERE a=(SELECT MAX(a) FROM t1) AND (a="2006060 EXECUTE s; DROP PREPARE s; DROP TABLE t1; # # Bug 19491 (CAST DATE AS DECIMAL returns incorrect result # SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)); SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) AS DECIMAL(20,6)); SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)); SELECT CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6));
mysql-test/t/type_newdecimal.test +8 −0 Original line number Diff line number Diff line Loading @@ -1108,3 +1108,11 @@ insert into t1 values (1,1), (1,2), (2,3), (2,4); select i, count(distinct j) from t1 group by i; select i+0.0 as i2, count(distinct j) from t1 group by i2; drop table t1; create table t1(f1 decimal(20,6)); insert into t1 values (CAST('10:11:12' AS date) + interval 14 microsecond); insert into t1 values (CAST('10:11:12' AS time)); select * from t1; drop table t1;
sql/field.cc +7 −0 Original line number Diff line number Diff line Loading @@ -2425,6 +2425,13 @@ int Field_new_decimal::store_decimal(const my_decimal *decimal_value) } int Field_new_decimal::store_time(TIME *ltime, timestamp_type t_type) { my_decimal decimal_value; return store_value(date2my_decimal(ltime, &decimal_value)); } double Field_new_decimal::val_real(void) { double dbl; Loading