summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/func_time.result15
-rw-r--r--mysql-test/t/func_time.test6
-rw-r--r--sql/item_cmpfunc.cc9
3 files changed, 28 insertions, 2 deletions
diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result
index 8f96a9ff5d9..1ada270b326 100644
--- a/mysql-test/r/func_time.result
+++ b/mysql-test/r/func_time.result
@@ -1358,6 +1358,21 @@ Warning 1292 Truncated incorrect time value: ''
Warning 1292 Truncated incorrect time value: ''
DROP TABLE t1;
End of 5.1 tests
+select time('10:10:10') > 10;
+time('10:10:10') > 10
+1
+select time('10:10:10') > 1010;
+time('10:10:10') > 1010
+1
+select time('10:10:09') > 101010;
+time('10:10:09') > 101010
+0
+select time('10:10:10') > 101010;
+time('10:10:10') > 101010
+0
+select time('10:10:11') > 101010;
+time('10:10:11') > 101010
+1
select time(' 1 02:03:04') + interval 9 microsecond;
time(' 1 02:03:04') + interval 9 microsecond
26:03:04.000009
diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test
index 65d347c05da..078f910a704 100644
--- a/mysql-test/t/func_time.test
+++ b/mysql-test/t/func_time.test
@@ -861,6 +861,12 @@ DROP TABLE t1;
--echo End of 5.1 tests
+select time('10:10:10') > 10;
+select time('10:10:10') > 1010;
+select time('10:10:09') > 101010;
+select time('10:10:10') > 101010;
+select time('10:10:11') > 101010;
+
select time(' 1 02:03:04') + interval 9 microsecond;
select time(' 1 02:03:04') - interval 9 microsecond;
select time('-1 02:03:04') + interval 9 microsecond;
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 24a117ef8ca..2cbcbbdb55f 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -870,9 +870,14 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
{
MYSQL_TIME buf;
int was_cut;
+ longlong res;
- if (number_to_datetime(value, &buf, TIME_INVALID_DATES|TIME_FUZZY_DATE,
- &was_cut) == -1)
+ if (t_type == MYSQL_TIMESTAMP_TIME)
+ res= number_to_time(value, &buf, &was_cut);
+ else
+ res= number_to_datetime(value, &buf, TIME_INVALID_DATES|TIME_FUZZY_DATE,
+ &was_cut);
+ if (res == -1)
{
const Lazy_string_num str(value);
make_truncated_value_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,