2012-06-03 64 views
0

我有一个字符串是这样的:16:00,我希望它被保存在其中有一个time(7)数据类型的列我的SQL Server数据库...字符串转换为时间澄清

当然,之前我将它保存在那里,我需要在时间数据类型中转换我的字符串。

在使用Convert.ToDateTime,我得到一个错误:

Cannot implicitly convert type 'System.DateTime' to 'System.TimeSpan'

那是因为我现在的储蓄Convert.ToDateTime(myString)到从我的数据库具有time(7)数据类型的实体的属性...

是否有其他方式将我的字符串转换为与SQL Server中的time(7)数据类型兼容的格式?

回答

6

对应于SQL time数据类型的托管类型是TimeSpan(或TimeSpan?时可为空),不DateTime - 指Mapping CLR Parameter Data为类型转换列表。

您可以使用TimeSpan.Parse(myString)来转换您的字符串。

-1

代替Convert.ToDateTime使用DateTime.TryParseExact(yourTimeString, "HH:mm",<other parameters>, out dateTime);

其他参数丢失。请查看DateTime.TryParseExact文档。但基本上它会将您的字符串从您指定的格式转换为dateTime。

+0

不会修复错误,'DateTime'仍然无法转换为'TimeSpan',无论您如何创建它。 – svick

0

使用SQL Server的Convert功能

convert(DateTime, '20:10:00:000', 114); 

CAST & CONVERT

0

您也可以使用这样的

Convert.ToDateTime(myString).TimeOfDay(); 

这将返回的时间。您可以将此值传递给Sql命令参数。

TimeOfDay返回TimeSpan对象。

TimeSpan tp = Convert.ToDateTime(myString).TimeOfDay();