日期:2014-05-17  浏览次数:20666 次

如何将nvarchar型的日期转换成datetime?

原来的日期类型为nvarchar
里面的数据都是这样的
应该如何将他转换为datetime类型的呢?
好像mssql的不支持0000-00-00这种样子的啊

------解决方案--------------------
SQL code

--不是不支持,是最早的日期好像是197几年
declare @x varchar(10);
select @x='0000-00-00'
select convert(datetime,case when @x='0000-00-00' then null else @x end);

------解决方案--------------------
SQL SERVER 2005下作的测试
SQL code
declare @dt varchar(20)
set @dt='0000-00-00'
select convert(datetime,@dt)
/*
Msg 242, Level 16, State 3, Line 3
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
*/

declare @dt nvarchar(20)
set @dt='0000-00-00'
select convert(datetime,@dt)
/*
Msg 8115, Level 16, State 2, Line 3
将 expression 转换为数据类型 datetime 时出现算术溢出错误。
*/