mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Fix for bug #23616: Week() changed behaviour between 5.0.22 and 5.0.24
Consider double values as legal date{time} function's arguments (i.e. allow dates in internal format YYYYMMDDHHMMSS.XXXXXX).
This commit is contained in:
parent
26c0934ee3
commit
10475626c1
4 changed files with 13 additions and 4 deletions
|
@ -229,9 +229,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
|
||||
|
|
|
@ -854,4 +854,8 @@ 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
|
||||
|
|
|
@ -492,4 +492,11 @@ 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
|
||||
|
|
|
@ -145,7 +145,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;
|
||||
|
|
Loading…
Reference in a new issue