Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对浇铸柱应用过滤器_Sql_Sql Server - Fatal编程技术网

Sql 对浇铸柱应用过滤器

Sql 对浇铸柱应用过滤器,sql,sql-server,Sql,Sql Server,我想对我铸造为日期的列应用一个过滤器,如下例所示: 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 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
是一个字符串,我强烈建议
尝试\u CAST()
或将数据固定到位。

帮我们一个忙,并正确标记您使用的数据库?您是否像Kars刚做的那样尝试了它,得到了相同的结果error@JerryM. 对不起,我想我不明白你说的mean@JerryM. 知道了。这是一台SQL Server我已经尝试了你的两个建议。第一个不起作用(得到了相同的错误),但第二个工作得很好。非常感谢您的帮助。@Gaduks。很高兴第二个有帮助。我不明白第一个如何返回对
D
的无效引用,因为它没有在任何地方引用。它返回“无效列名C”。我的意思是相同的错误,因为它不能识别过滤列。我很抱歉含糊不清