2011-03-14 107 views
1

我需要在MySQL DB列中找到平均日期。日期将高于2038-01-19,所以我不能使用UNIX_TIMESTAMP函数。有谁知道以不同的方式获得平均日期?当日期高于2038-01-19时MySQL的平均日期(不能使用UNIX_TIMESTAMP)

+1

我想这些问题在未来几年会变得更加频繁。 :) – 2011-03-14 16:19:35

+1

@Ted Hopp - 实际上,我很惊讶它会在2037年12月之前变得很普遍;-P – 2011-03-14 17:00:02

+0

@Alvaro - 可悲的是,你几乎肯定是对的。 :) – 2011-03-14 20:57:01

回答

0

好的。而不是使用UNIX_TIMESTAMP我使用了TO_DAYS和FROM_DAYS,它似乎按预期工作。

create table test (mydate date); 
insert into test values ('2042-10-01'), ('2043-10-01'), ('2044-10-01'); 
mysql > SELECT FROM_DAYS(AVG(TO_DAYS(mydate))) FROM test; 

+---------------------------------+ 
| FROM_DAYS(AVG(TO_DAYS(mydate))) | 
+---------------------------------+ 
| 2043-10-01      | 
+---------------------------------+ 
0

为什么不使用AVG函数?

create table test (mydate date); 
insert into test values ('2042-10-01'), ('2043-10-01'), ('2044-10-01'); 

mysql> select avg(mydate) from test; 
+-------------+ 
| avg(mydate) | 
+-------------+ 
| 20431001 | 
+-------------+ 
1 row in set (0.00 sec) 
+0

AVG用于数字参数(请参见[bugs.mysql.com/bug.php?id=9874](http://bugs.mysql.com/bug.php?id=9874))。这在日期/时间字段上无法正常工作。 – Jim 2011-03-14 16:35:02