SQL Server中无法将varchar转换为日期

3
在我的数据中,有一个名为“duedate”的列以varchar(5)格式存在,其中以以下格式存储日期“20110725”,表示2011年7月25日。是否有一种方法可以将其转换为日期格式?
我尝试使用:
cast(duedate as datetime) 

原方法不起作用,然后我尝试将其转换为bigint,再转换为datetime。

cast( cast(duedate as bigint) as datetime) 

这段文字提到:

算术溢出错误


抱歉,由于打字错误,应该是varchar(50),非常感谢你们提供的帮助,我会尝试你们提到的方法。

4个回答

5
如果该列确实是varchar(5),则它不能有像“20110725”这样的值,因为那将是8个字符。也许插入时这些值被截断了?'20110725'缩短到5个字符变成了'20117',转换这个是行不通的。我想问题可能是这样的,因为正如Mladen Prajdic已经说过的那样,将'20110725'转换为datetime完全可以工作。

3
请参考此表格中的有效日期时间转换代码。您需要使用的代码是112,它可以将日期从yyyymmdd格式转换。
CONVERT (datetime, duedate, 112)

2

为什么它不能工作?对我来说,执行SELECT cast('20110725' as datetime)的操作完全正常。


1

尝试在您的表格上运行此代码,以查找不是日期的值:

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

就像克里斯蒂安所说的那样,VarChar(5)也无法容纳您期望的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接