diff options
author | msvensson@pilot.blaudden <> | 2007-05-16 10:44:59 +0200 |
---|---|---|
committer | msvensson@pilot.blaudden <> | 2007-05-16 10:44:59 +0200 |
commit | a65d12a8303a894401495e70e0be63e7d4f37170 (patch) | |
tree | 890ba335add713d8bf248138165188b29e09cded /sql-common | |
parent | 19618b5375783d8e41724914e1a8a2167edced64 (diff) | |
download | mariadb-git-a65d12a8303a894401495e70e0be63e7d4f37170.tar.gz |
Backport of TIME->MYSQL_TIME / Y2K fixset
Made year 2000 handling more uniform
Removed year 2000 handling out from calc_days()
The above removes some bugs in date/datetimes with year between 0 and 200
Now we get a note when we insert a datetime value into a date column
For default values to CREATE, don't give errors for warning level NOTE
Fixed some compiler failures
Added library ws2_32 for windows compilation (needed if we want to compile with IOCP support)
Removed duplicate typedef TIME and replaced it with MYSQL_TIME
Better (more complete) fix for: Bug#21103 "DATE column not compared as DATE"
Fixed properly Bug#18997 "DATE_ADD and DATE_SUB perform year2K autoconversion magic on 4-digit year value"
Fixed Bug#23093 "Implicit conversion of 9912101 to date does not match cast(9912101 as date)"
Diffstat (limited to 'sql-common')
-rw-r--r-- | sql-common/my_time.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/sql-common/my_time.c b/sql-common/my_time.c index 4032c273e35..4a4ebf4b84d 100644 --- a/sql-common/my_time.c +++ b/sql-common/my_time.c @@ -727,7 +727,39 @@ void init_time(void) } - /* Calculate nr of day since year 0 in new date-system (from 1615) */ +/* + Handle 2 digit year conversions + + SYNOPSIS + year_2000_handling() + year 2 digit year + + RETURN + Year between 1970-2069 +*/ + +uint year_2000_handling(uint year) +{ + if ((year=year+1900) < 1900+YY_PART_YEAR) + year+=100; + return year; +} + + +/* + Calculate nr of day since year 0 in new date-system (from 1615) + + SYNOPSIS + calc_daynr() + year Year (exact 4 digit year, no year conversions) + month Month + day Day + + NOTES: 0000-00-00 is a valid date, and will return 0 + + RETURN + Days since 0000-00-00 +*/ long calc_daynr(uint year,uint month,uint day) { |