在sql

时间:2019-03-25 05:21:01

标签: 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数据类型转换为日期时间数据类型会导致超出范围的值。”

SELECT CONVERT(Datetime,CREATE_TIME , 120) from TABLE

2 个答案:

答案 0 :(得分:1)

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

您可以尝试使用substring函数创建DateTime格式的字符串值,然后执行convert

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

captureStream()

答案 1 :(得分:0)

您的日期字符串有一个小问题。当20181015 151706仅更改为日期部分20181015时,它才有效。

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