使用Access 2003
表
ENO Time
001 020000
001 040000
001 220000
002 030000
002 050000
005 230000
所以......,
时间日期类型是数据库中的Varchar。如何将Varchar转换为Datetime?
在这里,我希望获得ENO的总时间。
Select eno, sum (time) from table group by eno
显示错误,如 - 数据类型不匹配标准错误
Expected Output
001 26:00:00
002 08:00:00
所以......,
需要查询帮助。
答案 0 :(得分:1)
你最好在几秒钟内完成工作。使用Mid()函数分解字符串并计算秒数,求和次数,然后根据需要格式化结果。如果你把它写成一个单独的查询,你需要在三个不同的地方使用相同的长表达式,所以为了提高可读性,我会把它作为两个查询。第一个是:
SELECT eno, sum(val(mid(time,1,2))*3600+val(mid(time,3,2))*60+val(mid(time,5,2))) AS secs
FROM table
GROUP BY eno;
例如,将此查询作为“enosums”保存在访问中。第二个查询是:
SELECT eno, format(secs/3600, "00:") & format((secs/60 Mod 60), "00:") & format(secs Mod 60, "00")
FROM enosums;
我建议使用此方法的原因是,即使您设法转换为datetime值(您可以通过使用Mid()函数和连接运算符将“hhmmss”字符串转换为“hh:mm:ss”格式然后应用TimeValue函数),没有简单的方法以您需要的输出格式打印它,因为Format()函数将最多到23:59:59然后回到00:00:00。