sql字符串转日期

列A里面是字符串nvarchar(50)格式的2012-01-31,现在我想把字符串nvarchar(50)类型变成日期类型的2012-01-31,
使用select convert(datetime,列A) from tableA,显示“从字符串向 datetime 转换时失败。”
请问高手指点,这样应该怎样将列A转变成日期类型呢?

第1个回答  推荐于2021-02-22
--给你两个转日期的格式 实际中后面那个用的还多一点 虽然写法复杂点
select CAST(列A as datetime) 列A
from (select 列A,ISDATE(列A) bz from tableA ) aa where aa.bz=1

select cast(convert(char(10),列A,120) as datetime) 列A
from (select 列A,ISDATE(列A) bz from tableA ) aa where aa.bz=1本回答被提问者采纳
第2个回答  推荐于2017-08-22
sql字符串转日期
120或者121的格式是YYYY-MM-DD
而您这个格式是日月年的格式,使用105
SELECT convert(datetime,'30-03-2011',105)本回答被网友采纳
第3个回答  2013-05-31
可能是你的数据库里面, 某些数据 不是有效的日期。

你尝试执行一下

SELECT A FROM 表
WHERE
ISDATE( A ) = 0;

该语句将返回那些 认为不是日期的数据。
第4个回答  2013-05-31
你列A里面的有转不了日期的,例如2013-3-50,因为日期里面没有这一天,所以会提示转换失败,把这些数据去掉或者改下就可以了
第5个回答  2013-05-31
select cast(列A as datetime) from tableA