2009-08-17 207 views
0

使用Access 2003如何将Varchar转换为Datetime?

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

你最好在几秒钟内工作。使用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值(你可以通过使用中间做()函数和连接运算符转换的“HHMMSS”字符串转换为“hh:mm:ss”格式,然后应用TimeValue函数),但是没有简单的方法可以按照所需的输出格式打印此格式,因为Format()函数只能达到23:59:59,然后回到00:00:00。