summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/func_sapdb.result4
-rw-r--r--mysql-test/r/func_time.result4
-rw-r--r--mysql-test/t/func_time.test7
-rw-r--r--sql-common/my_time.c2
4 files changed, 13 insertions, 4 deletions
diff --git a/mysql-test/r/func_sapdb.result b/mysql-test/r/func_sapdb.result
index 18908c2c46e..4a6ec9a7ba0 100644
--- a/mysql-test/r/func_sapdb.result
+++ b/mysql-test/r/func_sapdb.result
@@ -240,9 +240,7 @@ a
10000
select microsecond(19971231235959.01) as a;
a
-0
-Warnings:
-Warning 1292 Truncated incorrect time value: '19971231235959.01'
+10000
select date_add("1997-12-31",INTERVAL "10.09" SECOND_MICROSECOND) as a;
a
1997-12-31 00:00:10.090000
diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result
index a5af2217684..f398e2b4962 100644
--- a/mysql-test/r/func_time.result
+++ b/mysql-test/r/func_time.result
@@ -1050,6 +1050,10 @@ H
select last_day('0000-00-00');
last_day('0000-00-00')
NULL
+select isnull(week(now() + 0)), isnull(week(now() + 0.2)),
+week(20061108), week(20061108.01), week(20061108085411.000002);
+isnull(week(now() + 0)) isnull(week(now() + 0.2)) week(20061108) week(20061108.01) week(20061108085411.000002)
+0 0 45 45 45
End of 4.1 tests
explain extended select timestampdiff(SQL_TSI_WEEK, '2001-02-01', '2001-05-01') as a1,
timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a2;
diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test
index ab904b187a3..e08a7edb2bf 100644
--- a/mysql-test/t/func_time.test
+++ b/mysql-test/t/func_time.test
@@ -570,6 +570,13 @@ union
select last_day('0000-00-00');
+#
+# Bug 23616: datetime functions with double argumets
+#
+
+select isnull(week(now() + 0)), isnull(week(now() + 0.2)),
+ week(20061108), week(20061108.01), week(20061108085411.000002);
+
--echo End of 4.1 tests
explain extended select timestampdiff(SQL_TSI_WEEK, '2001-02-01', '2001-05-01') as a1,
diff --git a/sql-common/my_time.c b/sql-common/my_time.c
index 446ae59f452..83b647be1bd 100644
--- a/sql-common/my_time.c
+++ b/sql-common/my_time.c
@@ -206,7 +206,7 @@ str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
digits= (uint) (pos-str);
start_loop= 0; /* Start of scan loop */
date_len[format_position[0]]= 0; /* Length of year field */
- if (pos == end)
+ if (pos == end || *pos == '.')
{
/* Found date in internal format (only numbers like YYYYMMDD) */
year_length= (digits == 4 || digits == 8 || digits >= 14) ? 4 : 2;