在oracle sql中平均日期

use*_*700 5 sql oracle average date

有没有办法在oracle中平均多个日期?平均没有任何好处.

谢谢.

Dan*_* A. 15

"平均日期"的定义是主观的,但您可以将日期转换为朱利安数字,然后将其平均,将其四舍五入,然后转换回日期.

create table dates (dt DATE);

insert into dates 
values ('24-APR-2012');
insert into dates 
values ('01-JAN-2012');
insert into dates 
values ('01-JAN-2013');
insert into dates
values ('25-DEC-1900');


select to_date(round(avg(to_number(to_char(dt, 'J')))),'J')
from dates;
Run Code Online (Sandbox Code Playgroud)

这是SQL小提琴:http://sqlfiddle.com/#!4/98ce9/1


Rev*_*van 5

oracle中的"中位数"函数以一种简洁的方式完成了其他答案.

以下是Oracle文档的链接 - https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions086.htm

它可以将arg作为数值数据类型或非数字数据类型,可以隐式转换为数字.

SQL> desc x1
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
A                                         NOT NULL NUMBER
D                                                  DATE

SQL> select * from x1;

     A D
---------- ---------
     1 11-DEC-14
     2 13-DEC-14
     3 22-DEC-14
     4 02-DEC-14
SQL> select median(d) from x1;

MEDIAN(D)
---------
12-DEC-14
Run Code Online (Sandbox Code Playgroud)