如何为varchar“DDMMYYYY HH:MM:SS”转换成DATETIME在SQL Server
问题描述:
我有一个varchar
的列,具有这种格式的如何为varchar“DDMMYYYY HH:MM:SS”转换成DATETIME在SQL Server
DDMMYYYY HH:MM:SS
例如,30072016 23:59:59
日期,我需要插入此到另一个表中的DATETIME
列中。
我尝试过各种convert
选项和所有似乎给这个错误
varchar数据类型到datetime数据类型的转化在外的范围内的值导致
请帮助。在SQL Server
答
下面是使用CONVERT
功能与风格105
DECLARE @datetime varchar(50)='30072016 23:59:59'
SELECT CONVERT(datetime,stuff(stuff(@datetime,3,0,'-'),6,0,'-'),105)
一种方式由于您的当前日期时间格式不与任何的本地日期时间格式匹配SQL SERVER
,所以我们需要转换为一种格式,SQL服务器可以读取。
SQL SERVER
可以读取这种格式DD-MM-YYYY HH:MM:SS
。要在day
,month
和year
之间插入-
,请使用STUFF
函数。插入后,我们可以将其转换为datetime
答
一种方法2012+将是单独做的日期和时间转换:
select (datefromparts(substring(col, 5, 4) + 0, substring(col, 3, 2) + 0, left(col, 2)) +
convert(time, right(col, 8))
) as dt_value
,其实这可以在早期版本的工作,你只需要使用不同的功能,因为datefromparts()
不支持的。
答
这与SQL Server本机可解析的任何格式都不匹配。
因此,我的建议是:
使用字符串操作(
LEFT
和SUBSTRING
)将其转换成一个格式是原生SQL服务器解析的,例如,YYYY-MM-DD HH:MM:SS
(样式120 ,“ODBC canonical”),然后使用
CONVERT
将其转换为日期时间。
这似乎工作。你能解释一下吗?试图学习!而且,它引入了我不需要的毫秒部分..?如何删除? –
阅读有关将字符串放入另一个字符串的'stuff'功能。阅读关于'datetime'的第二部分评论。一切都记录在案。 –
@Rohinibaskaran - 增加了解释..不要担心毫秒,因为它不存在您当前的格式。它将始终为零。 –