无法将 sql server 中的 varchar 转换成日期。

3 人关注

在我的数据中,有一列名为'duedate'的varchar(5)格式的数据,其日期以如下格式存储:'20110725',即2011年7月25日,我是否有办法将其转换成日期格式?

cast(duedate as datetime) 

这并不奏效 然后我试着把它转换为大数,然后再转换为日期时间

cast( cast(duedate as bigint) as datetime) 

数学溢出错误

对不起,我搞错了,是varchar(50)--打字错误,非常感谢你们的帮助,我会尝试你们提到的事情。

sql-server
tsql
sql-server-2008
date
srinagesh
srinagesh
发布于 2011-07-25
4 个回答
Christian Specht
Christian Specht
发布于 2011-07-25
0 人赞同

如果该列真的是varchar (5 ),那么它就不能有'20110725'这样的值,因为那将是 8个字符

也许这些值在插入时被截断了?
'20110725'缩短为5个字符就变成了'20117',而转换这个值是行不通的。

我猜问题是这样的,因为正如 Mladen Prajdic已经说过的 ,将'20110725'转换为数据时间可以完美地工作。

RB.
RB.
发布于 2011-07-25
0 人赞同

请看 这个 有效的日期-时间转换代码 。你需要的代码是 112 ,它可以从 yyyymmdd 格式转换。

CONVERT (datetime, duedate, 112)
Mladen Prajdic
Mladen Prajdic
发布于 2011-07-25
0 人赞同

做SELECT cast('20110725' as datetime)对我来说是完美的。

Yuck
Yuck
发布于 2011-07-25
0 人赞同

试着在你的表格上运行这个程序,找出不是日期的值。