我目前有一个varchar包含400个条目的列.每行的格式如下:
'Thu, 18 Sep 2014 23:59:06 '
Run Code Online (Sandbox Code Playgroud)
是否可以将此varchar列更改为datetime?
我试过这个......
ALTER TABLE BE
ALTER COLUMN pubDate datetime
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误
消息241,级别16,状态1,行1
转换在从字符串转换日期和/或时间时失败.
我将创建一个新的datetime列,然后编写一个update语句来插入正确的值,然后删除旧列(如果需要).
update语句如下所示:
update be set be.dt=convert(datetime, be.pubDate)
Run Code Online (Sandbox Code Playgroud)
编辑:在评论中即将与okaram相同.您可能必须将数据修复为SQL Server接受的格式.如果您在开始时摆脱工作日并在结束时添加毫秒,那么您的距离非常接近113.你需要它看起来像这样:
23 Oct 2016 11:02:07:577
Run Code Online (Sandbox Code Playgroud)
所以
update be set be.dt=convert(datetime,
CONCAT(SUBSTRING(be.pubDate, Charindex(', ', be.pubDate), LEN(be.pubDate)),
':000'), 113)
Run Code Online (Sandbox Code Playgroud)