如何将Varchar转换为Datetime?

时间:2009-08-17 10:27:58

标签: ms-access

使用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

所以......,

需要查询帮助。

1 个答案:

答案 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。

相关问题