mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
bug #19491 (CAST do DATETIME wrong result)
mysql-test/r/type_datetime.result: result fixed mysql-test/r/type_newdecimal.result: result fixed mysql-test/t/type_datetime.test: testcase mysql-test/t/type_newdecimal.test: testcase sql/field.cc: Field_new_decimal::store_time implemented sql/field.h: Field_new_decimal::store_time added sql/item.cc: auxiliary methods implemented to operate with datatimes sql/item.h: auxiliary methods declared in Item to operate with datatimes sql/item_timefunc.cc: Item_date::save_in_field old implementation removed sql/item_timefunc.h: my_decimal and save_in_field methods implemented for datetime items sql/my_decimal.cc: date2my_decimal implemented sql/my_decimal.h: date2my_decimal declared
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
20101112.000000
|
||||
drop table t1;
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user