summaryrefslogtreecommitdiff
path: root/sql-common
diff options
context:
space:
mode:
authormsvensson@pilot.blaudden <>2007-05-16 10:44:59 +0200
committermsvensson@pilot.blaudden <>2007-05-16 10:44:59 +0200
commita65d12a8303a894401495e70e0be63e7d4f37170 (patch)
tree890ba335add713d8bf248138165188b29e09cded /sql-common
parent19618b5375783d8e41724914e1a8a2167edced64 (diff)
downloadmariadb-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.c34
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)
{