我在表员工中有一个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
答案 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