0

我想将过滤器应用于我已转换为 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'

得到同样的错误。知道我该怎么做吗?

4

1 回答 1

1

首先,如果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()或就地修复数据。

于 2019-03-01T19:46:34.973 回答