mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Bug#32770: LAST_DAY() returns a DATE, but somehow internally keeps track of the TIME.
LAST_DAY() says it returns a DATE, not a DATETIME, but didn't zero the time fields. Adapted from a patch kindly supplied by Claudio Cherubino. mysql-test/r/func_time.result: show that LAST_DAY() returns only a DATE, not a DATETIME mysql-test/t/func_time.test: show that LAST_DAY() returns only a DATE, not a DATETIME sql/item_timefunc.cc: zero time-fields as we return only a DATE
This commit is contained in:
@@ -1282,4 +1282,7 @@ DATE_ADD('20071108', INTERVAL 1 DAY)
|
|||||||
select DATE_ADD(20071108, INTERVAL 1 DAY);
|
select DATE_ADD(20071108, INTERVAL 1 DAY);
|
||||||
DATE_ADD(20071108, INTERVAL 1 DAY)
|
DATE_ADD(20071108, INTERVAL 1 DAY)
|
||||||
2007-11-09
|
2007-11-09
|
||||||
|
select LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND;
|
||||||
|
LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND
|
||||||
|
2007-12-30 23:59:59
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@@ -797,4 +797,11 @@ select DATE_ADD(20071108181000, INTERVAL 1 DAY);
|
|||||||
select DATE_ADD('20071108', INTERVAL 1 DAY);
|
select DATE_ADD('20071108', INTERVAL 1 DAY);
|
||||||
select DATE_ADD(20071108, INTERVAL 1 DAY);
|
select DATE_ADD(20071108, INTERVAL 1 DAY);
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#32770: LAST_DAY() returns a DATE, but somehow internally keeps
|
||||||
|
# track of the TIME.
|
||||||
|
#
|
||||||
|
|
||||||
|
select LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@@ -3411,6 +3411,8 @@ bool Item_func_last_day::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
|||||||
ltime->day= days_in_month[month_idx];
|
ltime->day= days_in_month[month_idx];
|
||||||
if ( month_idx == 1 && calc_days_in_year(ltime->year) == 366)
|
if ( month_idx == 1 && calc_days_in_year(ltime->year) == 366)
|
||||||
ltime->day= 29;
|
ltime->day= 29;
|
||||||
|
ltime->hour= ltime->minute= ltime->second= 0;
|
||||||
|
ltime->second_part= 0;
|
||||||
ltime->time_type= MYSQL_TIMESTAMP_DATE;
|
ltime->time_type= MYSQL_TIMESTAMP_DATE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user