diff --git a/sql/field.cc b/sql/field.cc index 0d48d4ae004..3a0e788b0c1 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5239,7 +5239,7 @@ int Field_date::store(double nr) else tmp= (longlong) rint(nr); - return Field_date::store(tmp); + return Field_date::store(tmp, TRUE); } @@ -5261,6 +5261,9 @@ int Field_date::store(longlong nr, bool unsigned_val) error= 2; } + if (nr >= 19000000000000.0 && nr <= 99991231235959.0) + nr=floor(nr/1000000.0); // Timestamp to date + if (error) set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, error == 2 ? ER_WARN_DATA_OUT_OF_RANGE :