在SQL Server 2008中将日期类型转换为字符类型错误

时间:2015-04-20 11:40:27

标签: sql-server datetime type-conversion

我在表员工中有一个datetime类型列,其中有一些行包含值1900-01-01 00:00:00.000。我想从我的select查询中将此值替换为0。

select 
    EmployeeNumber, 
    case when CONVERT(CHAR(10), [HireDate], 104) = '01.01.1900' 
           then 0 
           else [HireDate] 
    end  col
from 
    emp..Employees  

但结果仍会返回日期时间类型结果1900-01-01 00:00:00.000

如何获得0而不是此值?

你能建议吗?

感谢
MZR

2 个答案:

答案 0 :(得分:2)

1900-01-01 00:00:00.000是datetime的默认值。

您可以将0更改为NULL:

    CASE 
        WHEN CONVERT(CHAR(10), [HireDate], 104) = '01.01.1900' THEN NULL
        ELSE [HireDate]
    END AS HireDate

或者,如果你真的希望它为0,你应该将你的日期时间列转换为其他内容:

    CASE 
        WHEN CONVERT(CHAR(10), [HireDate], 104) = '01.01.1900' THEN '0'
        ELSE CAST([HireDate] AS varchar(50))
    END AS HireDate

答案 1 :(得分:1)

感谢George,
得到了解决方案。 我们还需要更改生成的列类型,否则将自动进行转换。

select EmployeeNumber, case when CONVERT(CHAR(10),
   [HireDate],104)='01.01.1900' then '0'  else CAST(HireDate AS 
   varchar(50)) end  col
   from rr..Employees

BR
MZR