将字符串转换为时间澄清

时间:2012-06-03 11:28:47

标签: c# sql-server

我有一个这样的字符串:16:00我希望它保存在我的SQL Server数据库中的数据类型为time(7) ...

的列中

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

使用Convert.ToDateTime后,出现错误:

  

无法将类型'System.DateTime'隐式转换为'System.TimeSpan'

这是因为我将Convert.ToDateTime(myString)保存到我的数据库的实体属性中,该数据库具有time(7)数据类型......

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

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

使用SQL Server的Convert函数

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

请参阅CAST & CONVERT

答案 2 :(得分:0)

您也可以像这样使用它

Convert.ToDateTime(myString).TimeOfDay();

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

TimeOfDay会返回TimeSpan个对象。

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

答案 3 :(得分:-1)

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

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