在我的.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.
任何帮助将不胜感激。
答案 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))