OPはmmddyyを望んでおり、単純な変換はそのためには機能しません:
select convert(datetime,'12312009')
Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data type resulted in
an out-of-range datetime value
だからこれを試してみてください:
DECLARE @Date char(8)
set @Date='12312009'
SELECT CONVERT(datetime,RIGHT(@Date,4)+LEFT(@Date,2)+SUBSTRING(@Date,3,2))
出力:
-----------------------
2009-12-31 00:00:00.000
(1 row(s) affected)