将String列转换为DataTime

时间:2017-05-29 11:38:36

标签: sql-server vb.net

在我的.net winform应用程序中,我将excel数据导入SQL服务器。在我的excel表格中,我有'STRT_TM'列,其中包含03/01/2017 21:33:22格式的日期。我想进行显式转换,因为在隐式转换中,转换函数无法确定日期是dd / mm / yyyy还是mm / dd / yyyy。

在Sql Server中,我试图将字符串转换为日期。这是代码

select convert(smalldateTime,SUBSTRING('03/01/2017 14:05:34',7,4)+
SUBSTRING('03/01/2017 14:05:34',1,2) + SUBSTRING('03/01/2017 14:05:34',4,2))

结果是 2017-03-01 00:00:00 但是当我试图包括时间部分时,它会给出错误。 这是代码。

select convert(smalldateTime,SUBSTRING('03/01/2017 14:05:34',7,4)+ 
SUBSTRING('03/01/2017 14:05:34',1,2) + SUBSTRING('03/01/2017 14:05:34',4,2) + 
Substring('03/01/2017 14:05:34',12,8))

,错误是

Msg 295, Level 16, State 3, Line 3
Conversion failed when converting character string to smalldatetime data type.

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你错过了日期和时间之间的空格:

select convert(smalldateTime,
Substring('03/01/2017 14:05:34',7,4) + 
Substring('03/01/2017 14:05:34',1,2) + 
Substring('03/01/2017 14:05:34',4,2) + ' ' +
Substring('03/01/2017 14:05:34',12,8))