Fix for #16327: invalid TIMESTAMP values retrieved

This commit is contained in:
ramil@mysql.com 2006-05-17 17:00:30 +05:00
parent 713d17d5e7
commit 7319ef4ef1
3 changed files with 18 additions and 1 deletions

View File

@ -630,3 +630,10 @@ select monthname(str_to_date(null, '%m')), monthname(str_to_date(null, '%m')),
monthname(str_to_date(1, '%m')), monthname(str_to_date(0, '%m'));
monthname(str_to_date(null, '%m')) monthname(str_to_date(null, '%m')) monthname(str_to_date(1, '%m')) monthname(str_to_date(0, '%m'))
NULL NULL January NULL
set time_zone='-6:00';
create table t1(a timestamp);
insert into t1 values (19691231190001);
select * from t1;
a
1969-12-31 19:00:01
drop table t1;

View File

@ -322,4 +322,14 @@ select last_day('2005-01-00');
select monthname(str_to_date(null, '%m')), monthname(str_to_date(null, '%m')),
monthname(str_to_date(1, '%m')), monthname(str_to_date(0, '%m'));
#
# Bug #16327: problem with timestamp < 1970
#
set time_zone='-6:00';
create table t1(a timestamp);
insert into t1 values (19691231190001);
select * from t1;
drop table t1;
# End of 4.1 tests

View File

@ -3809,7 +3809,7 @@ String *Field_timestamp::val_str(String *val_buffer, String *val_ptr)
thd->time_zone_used= 1;
temp= time_tmp.year % 100;
if (temp < YY_PART_YEAR)
if (temp < YY_PART_YEAR - 1)
{
*to++= '2';
*to++= '0';