mirror of
https://github.com/MariaDB/server.git
synced 2025-11-13 21:42:58 +03:00
Merge igreenhoe@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into maint1.mysql.com:/data/localhome/igreenhoe/mysql-5.0-maint
This commit is contained in:
@@ -667,6 +667,78 @@ timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
|
|||||||
timestampdiff(SQL_TSI_DAY, '2000-02-01', '2000-03-01') as a4;
|
timestampdiff(SQL_TSI_DAY, '2000-02-01', '2000-03-01') as a4;
|
||||||
a1 a2 a3 a4
|
a1 a2 a3 a4
|
||||||
28 28 29 29
|
28 28 29 29
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:27');
|
||||||
|
TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:27')
|
||||||
|
0
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:28');
|
||||||
|
TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:28')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:29');
|
||||||
|
TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:29')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:27');
|
||||||
|
TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:27')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:28');
|
||||||
|
TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:28')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:29');
|
||||||
|
TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:29')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:27');
|
||||||
|
TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:27')
|
||||||
|
0
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:28');
|
||||||
|
TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:28')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:29');
|
||||||
|
TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:29')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:27');
|
||||||
|
TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:27')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:28');
|
||||||
|
TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:28')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:29');
|
||||||
|
TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:29')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:27');
|
||||||
|
TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:27')
|
||||||
|
0
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:28');
|
||||||
|
TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:28')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:29');
|
||||||
|
TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:29')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:27');
|
||||||
|
TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:27')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:28');
|
||||||
|
TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:28')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:29');
|
||||||
|
TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:29')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:27');
|
||||||
|
TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:27')
|
||||||
|
0
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:28');
|
||||||
|
TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:28')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:29');
|
||||||
|
TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:29')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:27');
|
||||||
|
TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:27')
|
||||||
|
1
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:28');
|
||||||
|
TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:28')
|
||||||
|
2
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:29');
|
||||||
|
TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:29')
|
||||||
|
2
|
||||||
select date_add(time,INTERVAL 1 SECOND) from t1;
|
select date_add(time,INTERVAL 1 SECOND) from t1;
|
||||||
date_add(time,INTERVAL 1 SECOND)
|
date_add(time,INTERVAL 1 SECOND)
|
||||||
NULL
|
NULL
|
||||||
|
|||||||
@@ -318,6 +318,37 @@ select timestampdiff(SQL_TSI_DAY, '1986-02-01', '1986-03-01') as a1,
|
|||||||
timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
|
timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
|
||||||
timestampdiff(SQL_TSI_DAY, '2000-02-01', '2000-03-01') as a4;
|
timestampdiff(SQL_TSI_DAY, '2000-02-01', '2000-03-01') as a4;
|
||||||
|
|
||||||
|
# bug 16226
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-11 14:30:29');
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(day,'2006-01-10 14:30:28','2006-01-12 14:30:29');
|
||||||
|
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-17 14:30:29');
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(week,'2006-01-10 14:30:28','2006-01-24 14:30:29');
|
||||||
|
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-02-10 14:30:29');
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(month,'2006-01-10 14:30:28','2006-03-10 14:30:29');
|
||||||
|
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2007-01-10 14:30:29');
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:27');
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:28');
|
||||||
|
SELECT TIMESTAMPDIFF(year,'2006-01-10 14:30:28','2008-01-10 14:30:29');
|
||||||
|
|
||||||
|
# end of bug
|
||||||
|
|
||||||
select date_add(time,INTERVAL 1 SECOND) from t1;
|
select date_add(time,INTERVAL 1 SECOND) from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
|||||||
@@ -2877,6 +2877,8 @@ longlong Item_func_timestamp_diff::val_int()
|
|||||||
{
|
{
|
||||||
uint year_beg, year_end, month_beg, month_end, day_beg, day_end;
|
uint year_beg, year_end, month_beg, month_end, day_beg, day_end;
|
||||||
uint years= 0;
|
uint years= 0;
|
||||||
|
uint second_beg, second_end, microsecond_beg, microsecond_end;
|
||||||
|
|
||||||
if (neg == -1)
|
if (neg == -1)
|
||||||
{
|
{
|
||||||
year_beg= ltime2.year;
|
year_beg= ltime2.year;
|
||||||
@@ -2885,6 +2887,10 @@ longlong Item_func_timestamp_diff::val_int()
|
|||||||
month_end= ltime1.month;
|
month_end= ltime1.month;
|
||||||
day_beg= ltime2.day;
|
day_beg= ltime2.day;
|
||||||
day_end= ltime1.day;
|
day_end= ltime1.day;
|
||||||
|
second_beg= ltime2.hour * 3600 + ltime2.minute * 60 + ltime2.second;
|
||||||
|
second_end= ltime1.hour * 3600 + ltime1.minute * 60 + ltime1.second;
|
||||||
|
microsecond_beg= ltime2.second_part;
|
||||||
|
microsecond_end= ltime1.second_part;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2894,6 +2900,10 @@ longlong Item_func_timestamp_diff::val_int()
|
|||||||
month_end= ltime2.month;
|
month_end= ltime2.month;
|
||||||
day_beg= ltime1.day;
|
day_beg= ltime1.day;
|
||||||
day_end= ltime2.day;
|
day_end= ltime2.day;
|
||||||
|
second_beg= ltime1.hour * 3600 + ltime1.minute * 60 + ltime1.second;
|
||||||
|
second_end= ltime2.hour * 3600 + ltime2.minute * 60 + ltime2.second;
|
||||||
|
microsecond_beg= ltime1.second_part;
|
||||||
|
microsecond_end= ltime2.second_part;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* calc years */
|
/* calc years */
|
||||||
@@ -2907,8 +2917,13 @@ longlong Item_func_timestamp_diff::val_int()
|
|||||||
months+= 12 - (month_beg - month_end);
|
months+= 12 - (month_beg - month_end);
|
||||||
else
|
else
|
||||||
months+= (month_end - month_beg);
|
months+= (month_end - month_beg);
|
||||||
|
|
||||||
if (day_end < day_beg)
|
if (day_end < day_beg)
|
||||||
months-= 1;
|
months-= 1;
|
||||||
|
else if ((day_end == day_beg) &&
|
||||||
|
((second_end < second_beg) ||
|
||||||
|
(second_end == second_beg && microsecond_end < microsecond_beg)))
|
||||||
|
months-= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (int_type) {
|
switch (int_type) {
|
||||||
|
|||||||
Reference in New Issue
Block a user