怎么将不同格式的字符串转换成日期格式

如何将不同格式的字符串转换成日期格式
假设表A中有一个字段birthday,格式为varchar(50),
里面既有 2012-6-5 这样格式,也有 7/28/2006这样的格式。
用select Convert(datetime,birthday) from XXX
和select Cast(birthday as datetime) from XXX
都出现以下的错误:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
发现 7/28/2006 格式的字符串无法转换。

请问如何将这列转换成日期格式?

------解决方案--------------------
'7/28/2006'这个可以转化为datetime的,
你自己试试 select Cast('7/28/2006' as datetime)  or select convert(datetime,'7/28/2006') 

应该是其它值有问题