diff options
-rw-r--r-- | mysql-test/r/func_time.result | 4 | ||||
-rw-r--r-- | mysql-test/t/func_time.test | 2 | ||||
-rw-r--r-- | sql/item_timefunc.cc | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index e511da4588e..cb177137476 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -27,6 +27,10 @@ sec_to_time('9001.1') sec_to_time('1234567890123.123') 02:30:01.100000 838:59:59.999999 Warnings: Warning 1292 Truncated incorrect time value: '1234567890123.123' +select sec_to_time(-9001.1), sec_to_time(-9001.1) / 1, +sec_to_time(-9001.1) / 1e0, sec_to_time(-9001) div 1; +sec_to_time(-9001.1) sec_to_time(-9001.1) / 1 sec_to_time(-9001.1) / 1e0 sec_to_time(-9001) div 1 +-02:30:01.1 -23001.10000 -23001.1 -23001 select sec_to_time(90011e-1), sec_to_time(1234567890123e30); sec_to_time(90011e-1) sec_to_time(1234567890123e30) 02:30:01.100000 838:59:59.999999 diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 2d84202c6aa..dafc9e0e0f0 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -18,6 +18,8 @@ select sec_to_time(9001),sec_to_time(9001)+0,time_to_sec("15:12:22"), select sec_to_time(9001.1), time_to_sec('15:12:22.123456'), time_to_sec(15.5566778899); select sec_to_time(time_to_sec('-838:59:59')); select sec_to_time('9001.1'), sec_to_time('1234567890123.123'); +select sec_to_time(-9001.1), sec_to_time(-9001.1) / 1, + sec_to_time(-9001.1) / 1e0, sec_to_time(-9001) div 1; --replace_result e+042 e+42 select sec_to_time(90011e-1), sec_to_time(1234567890123e30); select sec_to_time(1234567890123), sec_to_time('99999999999999999999999999999'); diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index b080f2e9707..f69d77ad6b5 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1370,7 +1370,8 @@ longlong Item_temporal_func::val_int() MYSQL_TIME ltime; if (get_date(<ime, TIME_FUZZY_DATE)) return 0; - return (longlong)TIME_to_ulonglong(<ime); + longlong v= TIME_to_ulonglong(<ime); + return ltime.neg ? -v : v; } |