Ms access 如何获得适当的总时间值?

Ms access 如何获得适当的总时间值?,ms-access,Ms Access,使用Access 2003 桌子 等等 TotalHours数据类型是Datetime 使用的查询 Select Personid, sum (TotalHours) from table group by personid. 它显示 Personid TotalHours 111 4.30842592592593 222 7.93241898148148 等等 我想用Sum(TotalHours)显示一个合适的时间格式。Like(HH:MM:SS) 预期产量 Personid Total

使用Access 2003

桌子

等等

TotalHours数据类型是Datetime

使用的查询

Select Personid, sum (TotalHours) from table group by personid.
它显示

Personid TotalHours

111 4.30842592592593
222 7.93241898148148
等等

我想用Sum(TotalHours)显示一个合适的时间格式。Like(HH:MM:SS)

预期产量

Personid TotalHours

111 32:44:23
222 23:11:22
等等


需要查询帮助。

发生的事情是,它将时间的数字表示相加

您可以这样做:

Select Personid, cdate(sum (TotalHours)) as GrandTotal
from table 
group by personid.
但你会得到如下结果:

111   1900-01-01 2:28:10 AM
222              1:23:32 AM
这是因为PersonalID111超过24小时

你真正需要做的是把时间缩短到几秒钟;然后添加它们;然后再把它分成小时/分/秒;我用两个问题来回答这个问题

[time_1 definition]

SELECT time_tab.pid,
    Sum(Hour([time]) * 3600
    + Minute([time]) * 60
    + Second([time])) AS time_total
FROM time_tab
GROUP BY time_tab.pid;


[time_2 definition]

SELECT time_1.pid, 
    Int([time_total]/3600) AS h,  
    Int(([time_total]-Int([time_total]/3600) * 3600)/60) AS m, 
    [time_total]
        - (Int(([time_total]-Int([time_total]/3600) * 3600)/60)*60 
            + (Int([time_total]/3600)*3600)) AS s
FROM time_1
这让我

111   50  28  10
222   1   23  32
111   50:28:10
222    1:23:32

这让我

111   50  28  10
222   1   23  32
111   50:28:10
222    1:23:32

所发生的是,它是时间的数字表示的总和

您可以这样做:

Select Personid, cdate(sum (TotalHours)) as GrandTotal
from table 
group by personid.
但你会得到如下结果:

111   1900-01-01 2:28:10 AM
222              1:23:32 AM
这是因为PersonalID111超过24小时

你真正需要做的是把时间缩短到几秒钟;然后添加它们;然后再把它分成小时/分/秒;我用两个问题来回答这个问题

[time_1 definition]

SELECT time_tab.pid,
    Sum(Hour([time]) * 3600
    + Minute([time]) * 60
    + Second([time])) AS time_total
FROM time_tab
GROUP BY time_tab.pid;


[time_2 definition]

SELECT time_1.pid, 
    Int([time_total]/3600) AS h,  
    Int(([time_total]-Int([time_total]/3600) * 3600)/60) AS m, 
    [time_total]
        - (Int(([time_total]-Int([time_total]/3600) * 3600)/60)*60 
            + (Int([time_total]/3600)*3600)) AS s
FROM time_1
这让我

111   50  28  10
222   1   23  32
111   50:28:10
222    1:23:32

这让我

111   50  28  10
222   1   23  32
111   50:28:10
222    1:23:32

你的总数(例如“32:44:23”)没有意义,你确定“12.23.34”是日期时间吗?@gbn。我把一个样本输出。我不会给出精确的输出。我需要(hh:mm:ss)格式。好的……你的总数(如“32:44:23”)没有意义,你确定“12.23.34”是日期时间吗?@gbn。我把一个样本输出。我不会给出精确的输出。我需要(hh:mm:ss)格式。好啊