在我的数据中,一个名为'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) - 拼写错误,非常感谢帮助生病尝试你们提到的事情
答案 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)
将无法保持你所期望的价值。