2013-05-07 61 views
2

我正在讀取數據源中的數據源,該數據源以格式d:h:m:s:f中的varchar給出時間,日部分始終爲0,該列表示一天中的時間。我想添加此列到我已有的日期時間。解析sql中的時間跨度字符串

Entry_Date   Entry_Time 
3/3/2009 12:00:00 0:16:17:6:0 
8/24/2011 12:00:00 0:8:39:18:0 
9/4/2010 12:00:00 0:12:33:18:0 

如果我是用C#我只想做TimeSpan.ParseExact,但我不知道如何在一個純粹的SQL的方式處理這個問題。

我會投到time,但我使用Sql Server 2005並且沒有time類型。

我如何將時間添加到相鄰的日期時間?

+0

要合併'Entry_Date'用' Entry_Time'作爲一個'DateTime'? – Magnus 2013-05-07 15:43:32

+0

@Magnus是的,那是我想要的。 – 2013-05-07 15:44:09

回答

3

像這樣簡單:

select Entry_Date + cast(Entry_Time as datetime) combinedCol 
from YourTable 

這裏是工作提琴:http://sqlfiddle.com/#!3/85c3c/1

享受!


原提問者注:

SQL不能處理秒的小數部分但它們可以trimed關閉,因此該查詢將

select Entry_Date + cast(left(Entry_Time, len(Entry_Time) - 2) as datetime) combinedCol 
from YourTable 
+0

這是我嘗試的第一件事。它無法解析字符串「從字符串轉換datetime時轉換失敗」。 – 2013-05-07 15:46:02

+0

問題是,你做了d:h:m:s,我有d:h:m:s:f,但是秒數總是零,所以我可以做一個'cast(left(Entry_Time,len(Entry_Time) - 2)作爲日期時間)' – 2013-05-07 15:50:56