2
Name|| day||ActivityDate ||TimeIn  || TimeOut ||
Ade || 20 || 2013-08-20 || 10:06:09 || 18:21:03 ||
Ade || 21 ||2013-08-27  || 11:00:34 || 18:06:56 ||
Ade || 22 || 2013-08-28 || 09:56:29 || 17:59:56 ||

这是我的查询:

select 
tot=sum(DATEDIFF(hh ,TimeIn ,TimeOut )) as TotalHourAndMinute
from report

和错误:

1582 - 对本机函数 'DATEDIFF' 的调用中的参数计数不正确

这是我在数据表中的表。我不知道如何获得像 TimeOut-TimeIn 这样的总小时数。

仅供参考,我在这张表中有很多数据.. 不仅仅是这 3..

我希望你们清楚...

Name|| day||ActivityDate ||TimeIn  || TimeOut   || TotalHourAndMinute
Ade || 20 || 2013-08-20 || 10:00:00 || 18:30:00 ||   8.5
Ade || 21 ||2013-08-27  || 11:00:34 || 18:06:56 ||   7.something
Ade || 22 || 2013-08-28 || 09:56:29 || 17:59:56 ||   7.something

我希望它会是这样的..

更新

4

3 回答 3

1

好吧,如果您使用的是 MySQL,则该函数的正确格式是:

DATEDIFF(expr1,expr2)

更多信息DATEDIFF,请点击此处。此外,MySQL 的所有可用时间函数都在这里

但是,如果您想查看两个日期之间的小时数差异,请使用TIME_DIFF.

TIMEDIFF(expr1,expr2)

以及有关TIME_DIFF 此处的文档。

但严格按照您的情况,您应该这样编写查询:

SELECT tot = sum(HOUR(TIMEDIFF(TimeIn, TimeOut))) AS TotalHourAndMinute
FROM report

更新:

现在,在更新您的问题后,我了解您想要什么。

您需要使用的查询是这样的:

SELECT 
      NAME, 
      DAY, 
      ActivityDate, 
      SUM(TIMEDIFF(TimeOut, TimeIn)) as TotalHourAndMinute
FROM REPORT
WHERE (TimeOut IS NOT NULL) AND (TimeIn IS NOT NULL)
GROUP BY NAME, DAY, ActivityDate
于 2013-09-06T09:48:15.413 回答
0

如果您聚合时间值,您将以秒为单位获得结果,将其转换回您调用的时间SEC_TO_TIME。这给了你:

SELECT
    SEC_TO_TIME(SUM(TIMEDIFF(TimeOut, TimeIn))) AS TotalHourAndMinute
FROM
    report
于 2013-09-06T09:59:45.897 回答
0

利用:

SELECT HOUR(TIMEDIFF(TimeOut,TimeIn)) AS hour from report;

欲了解更多信息,请访问网站。

于 2013-09-06T09:50:24.250 回答