无法在sql server中将varchar转换为日期

时间:2011-07-25 11:48:42

标签: sql-server tsql sql-server-2008 date

在我的数据中,一个名为'duedate'的列为varchar(5)格式的日期以2011年7月25日的格式'20110725'存储,有没有办法可以将其转换为日期格式< / p>

我尝试使用

cast(duedate as datetime) 

哪个不起作用 然后我试图将它转换为bigint然后转换为datetime

cast( cast(duedate as bigint) as datetime) 

其中说

  

arithematic overflow error


很抱歉混乱是varchar(50) - 拼写错误,非常感谢帮助生病尝试你们提到的事情

4 个答案:

答案 0 :(得分:5)

如果列实际上是varchar( 5 ),则它不能具有类似'20110725'的值,因为它将是 8 个字符。

插入时可能会截断值? '20110725'缩短为5个字符变为'20117',转换不起作用。

我想问题是这样的,因为Mladen Prajdic already said将'20110725'转换为日期时间非常有效。

答案 1 :(得分:3)

请参阅this table有效的日期 - 时间转换代码。您需要的代码为112,可从yyyymmdd格式转换。

CONVERT (datetime, duedate, 112)

答案 2 :(得分:2)

怎么没有用呢?做SELECT cast('20110725'作为日期时间)对我来说非常适合。

答案 3 :(得分:1)

尝试在桌面上运行此功能,以查找不是日期的值:

SELECT duedate
FROM your_table
WHERE ISDATE(duedate) = 0;

就像克里斯蒂安所说的那样,VarChar(5)将无法保持你所期望的价值。