sql 平均上班时间

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:14:06
例如,我一周出勤4天,上班时间分别为
2008-12-01 07:25:04.000,
2008-12-02 07:13:45.000,
2008-12-03 07:28:14.000,
2008-12-04 07:25:39.000,
问怎样求上班的平均时间?
当然,我要求的是用SQL语句
1楼 看不懂
2楼 结果不行
3楼 不是平均时间,是中间值,一平均变成11点多
4楼 进错门了
5楼 datetime是不能AVG的

你是没问题,可是我用的是SQL2005,不过思路我收了。谢了

sql 平均上班时间
select avg(substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 12, 2) * 3600 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 15, 2) * 60 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 18, 2))
from 表名 t

我的做法是以秒为单位计算的:
select avg(substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 12, 2) * 3600 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 15, 2) * 60 +
substr(to_char(t.上班时间, 'yyyy/mm/dd hh24:mi:ss'), 18, 2))
from 表名 t
补充:结果哪里有问题???

时间跟数字一样可以加减的

select avg(datetime) as avgtime
from 表
group by convert(smalldatetime,datetime,108)

注:convert(smalldatetime,datetime,108),换式成时间,不含日期

我是用oracle的,oracle里面有个sysdate,表示系统时间的,可以这样写select (select avg(上班时间-sysdate) from 上班时间表 ) +
(select sysdate from dual)
from dual;
仅供参考

select cast(avg(cast(时间字段 as float)) as smalldatetime) from 表名