在sql中将varchar转换为datetime

在sql中将varchar转换为datetime,sql,sql-server,datetime,varchar,Sql,Sql Server,Datetime,Varchar,目前在我的数据库中,我有 20181015 151706 ---------- varchar(15) 2018-10-15 15:17:06 000--- Datetime 如何将它从varchar转换为datetime 我已尝试使用下面的命令 SELECT CONVERT(Datetime,CREATE_TIME , 120) from TABLE 但是我犯了一个错误 “将varchar数据类型转换为datetime数据类型导致值超出范围。” 由特殊的20181015 151706var

目前在我的数据库中,我有

20181015 151706 ---------- varchar(15)
2018-10-15 15:17:06 000--- Datetime
如何将它从varchar转换为datetime

我已尝试使用下面的命令

SELECT CONVERT(Datetime,CREATE_TIME , 120) from TABLE
但是我犯了一个错误

“将varchar数据类型转换为datetime数据类型导致值超出范围。”


由特殊的
20181015 151706
varchar
DateTime值引起的错误

您可以尝试使用
子字符串
函数生成日期时间格式字符串值,然后执行
转换

SELECT CONVERT(DATETIME,CONCAT(substring(col, 1, 4),'-',substring(col, 5, 2),'-',substring(col, 7, 2),' ',substring(col, 9, 2),':',substring(col, 11, 2),':',substring(col, 13, 2)))
FROM (
   select REPLACE('20181015 151706',' ','') col
) t1

您的日期字符串有点问题。当
20181015 151706
更改为仅日期部分
20181015
时,该选项起作用

SELECT CONVERT(DATETIME, col)
FROM (
   select '20181015' col
) t1

如果日期是20181010 151706,它会起作用吗?如果可以的话,那是因为日期格式(YYYYMMDD vs yyyyyddmm)。你的数据库管理系统是什么?为什么将varchar保存为datetime值?这是sql server 2012
SELECT CONVERT(DATETIME, col)
FROM (
   select '20181015' col
) t1