我想将过滤器应用于我已转换为 DATE 的列,如下例所示:
select A, B, CAST(C as DATE) as D, E from MY_TABLE where D>'2018-12-12'
这是行不通的。我收到错误:“列名 'D' 无效。” 我也试过:
select A, B, CAST(C as DATE) as D, E from MY_TABLE where C>'2018-12-12'
得到同样的错误。知道我该怎么做吗?
我想将过滤器应用于我已转换为 DATE 的列,如下例所示:
select A, B, CAST(C as DATE) as D, E from MY_TABLE where D>'2018-12-12'
这是行不通的。我收到错误:“列名 'D' 无效。” 我也试过:
select A, B, CAST(C as DATE) as D, E from MY_TABLE where C>'2018-12-12'
得到同样的错误。知道我该怎么做吗?
首先,如果C已经是日期/时间类型,您可以简单地执行以下操作:
select A, B, CAST(C as DATE) as D, E
from MY_TABLE
where C > DATEADD(DAY, 1, '2018-12-12')
如果没有,您可以使用横向连接,在 SQL Server 中使用APPLY关键字:
select A, B, v.D, E
from MY_TABLE t cross apply
(values (CAST(C as DATE))) v(D)
where v.D > '2018-12-12';
如果C是字符串,我强烈建议TRY_CAST()或就地修复数据。