Loading mysql-test/r/func_time.result +12 −0 Original line number Diff line number Diff line Loading @@ -1270,4 +1270,16 @@ select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1; ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'concat' set lc_time_names=en_US; drop table t1; select DATE_ADD('20071108181000', INTERVAL 1 DAY); DATE_ADD('20071108181000', INTERVAL 1 DAY) 2007-11-09 18:10:00 select DATE_ADD(20071108181000, INTERVAL 1 DAY); DATE_ADD(20071108181000, INTERVAL 1 DAY) 2007-11-09 18:10:00 select DATE_ADD('20071108', INTERVAL 1 DAY); DATE_ADD('20071108', INTERVAL 1 DAY) 2007-11-09 select DATE_ADD(20071108, INTERVAL 1 DAY); DATE_ADD(20071108, INTERVAL 1 DAY) 2007-11-09 End of 5.0 tests mysql-test/t/func_time.test +10 −0 Original line number Diff line number Diff line Loading @@ -787,4 +787,14 @@ select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1; set lc_time_names=en_US; drop table t1; # # Bug#32180: DATE_ADD treats datetime numeric argument as DATE # instead of DATETIME # select DATE_ADD('20071108181000', INTERVAL 1 DAY); select DATE_ADD(20071108181000, INTERVAL 1 DAY); select DATE_ADD('20071108', INTERVAL 1 DAY); select DATE_ADD(20071108, INTERVAL 1 DAY); --echo End of 5.0 tests sql-common/my_time.c +8 −1 Original line number Diff line number Diff line Loading @@ -1108,9 +1108,14 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res, long part1,part2; *was_cut= 0; bzero((char*) time_res, sizeof(*time_res)); time_res->time_type=MYSQL_TIMESTAMP_DATE; if (nr == LL(0) || nr >= LL(10000101000000)) { time_res->time_type=MYSQL_TIMESTAMP_DATETIME; goto ok; } if (nr < 101) goto err; if (nr <= (YY_PART_YEAR-1)*10000L+1231L) Loading @@ -1134,6 +1139,9 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res, } if (nr < 101000000L) goto err; time_res->time_type=MYSQL_TIMESTAMP_DATETIME; if (nr <= (YY_PART_YEAR-1)*LL(10000000000)+LL(1231235959)) { nr= nr+LL(20000000000000); /* YYMMDDHHMMSS, 2000-2069 */ Loading @@ -1147,7 +1155,6 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res, ok: part1=(long) (nr/LL(1000000)); part2=(long) (nr - (longlong) part1*LL(1000000)); bzero((char*) time_res, sizeof(*time_res)); time_res->year= (int) (part1/10000L); part1%=10000L; time_res->month= (int) part1 / 100; time_res->day= (int) part1 % 100; Loading Loading
mysql-test/r/func_time.result +12 −0 Original line number Diff line number Diff line Loading @@ -1270,4 +1270,16 @@ select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1; ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'concat' set lc_time_names=en_US; drop table t1; select DATE_ADD('20071108181000', INTERVAL 1 DAY); DATE_ADD('20071108181000', INTERVAL 1 DAY) 2007-11-09 18:10:00 select DATE_ADD(20071108181000, INTERVAL 1 DAY); DATE_ADD(20071108181000, INTERVAL 1 DAY) 2007-11-09 18:10:00 select DATE_ADD('20071108', INTERVAL 1 DAY); DATE_ADD('20071108', INTERVAL 1 DAY) 2007-11-09 select DATE_ADD(20071108, INTERVAL 1 DAY); DATE_ADD(20071108, INTERVAL 1 DAY) 2007-11-09 End of 5.0 tests
mysql-test/t/func_time.test +10 −0 Original line number Diff line number Diff line Loading @@ -787,4 +787,14 @@ select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1; set lc_time_names=en_US; drop table t1; # # Bug#32180: DATE_ADD treats datetime numeric argument as DATE # instead of DATETIME # select DATE_ADD('20071108181000', INTERVAL 1 DAY); select DATE_ADD(20071108181000, INTERVAL 1 DAY); select DATE_ADD('20071108', INTERVAL 1 DAY); select DATE_ADD(20071108, INTERVAL 1 DAY); --echo End of 5.0 tests
sql-common/my_time.c +8 −1 Original line number Diff line number Diff line Loading @@ -1108,9 +1108,14 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res, long part1,part2; *was_cut= 0; bzero((char*) time_res, sizeof(*time_res)); time_res->time_type=MYSQL_TIMESTAMP_DATE; if (nr == LL(0) || nr >= LL(10000101000000)) { time_res->time_type=MYSQL_TIMESTAMP_DATETIME; goto ok; } if (nr < 101) goto err; if (nr <= (YY_PART_YEAR-1)*10000L+1231L) Loading @@ -1134,6 +1139,9 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res, } if (nr < 101000000L) goto err; time_res->time_type=MYSQL_TIMESTAMP_DATETIME; if (nr <= (YY_PART_YEAR-1)*LL(10000000000)+LL(1231235959)) { nr= nr+LL(20000000000000); /* YYMMDDHHMMSS, 2000-2069 */ Loading @@ -1147,7 +1155,6 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res, ok: part1=(long) (nr/LL(1000000)); part2=(long) (nr - (longlong) part1*LL(1000000)); bzero((char*) time_res, sizeof(*time_res)); time_res->year= (int) (part1/10000L); part1%=10000L; time_res->month= (int) part1 / 100; time_res->day= (int) part1 % 100; Loading