当我得到这个错误时,我完全困惑了:"操作数类型冲突:int与日期不兼容">
我有以下查询,我在哪里得到错误:
select top 1 a.[ID], a.[DateA], a.[DateD] from view1 a where a.ID]=1
union all
(select top 1 a.[ID], a.[DateA], a.[DateD] from view2 a where a.[ID]=2 )
数据:
ID DateA DateD
1 2021-01-09 00:00:00.000 NULL
2 2006-11-27 00:00:00.000 NULL
但是,如果我更改查询,使"DateD"列直接为null,那么它工作正常,没有错误:
select top 1 a.[ID], a.[DateA], null as [DateD] from view1 a where a.ID]=1
union all
(select top 1 a.[ID], a.[DateA], a.[DateD] from view2 a where a.[ID]=2 )
在第一个视图中(在引擎盖下(选择NULL作为[DateD]在第二个视图(发动机罩下(中,我有:选择CAST(DateD AS DATE(AS[DateD]
问题出在哪里?
当SQL Server遇到NULL
并且必须确定类型时,默认值为int
。如果你这样做,你可以很容易地看到:
select null as x
into t;
然后看看CCD_ 3的定义(参见此处(。
因此,要获得不同类型的NULL
,请投射它:
select cast(null as date) as x
您需要在视图中执行此操作。