在SQL中解析时间跨度字符串

3

我正在从一个数据源中读取时间,该时间以 d:h:m:s:f 的字符串形式呈现。其中,天数部分始终为 0,该列表示一天中的某个时间。我想将此列添加到我已有的日期时间中。

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类型。

我该如何将时间添加到相邻的日期时间中?


你想将 Entry_DateEntry_Time 合并为一个 DateTime 吗? - Magnus
@Magnus 是的,那就是我想要的。 - Scott Chamberlain
1个回答

6
就像这样简单:
select Entry_Date + cast(Entry_Time as datetime) combinedCol
from YourTable

这里有一个可用的fiddle:http://sqlfiddle.com/#!3/85c3c/1 祝使用愉快!
原提问者的备注:
SQL无法处理分数秒,但可以将其截断以使查询变得简单。
select Entry_Date + cast(left(Entry_Time, len(Entry_Time) - 2) as datetime) combinedCol
from YourTable

那是我尝试的第一件事。它无法解析字符串"Conversion failed when converting datetime from character string."。 - Scott Chamberlain
问题是,你使用了d:h:m:s格式,而我使用的是d:h:m:s:f格式,但是毫秒总是为零,所以我可以执行cast(left(Entry_Time, len(Entry_Time) - 2) as datetime) - Scott Chamberlain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接