2009-08-17 204 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。