【发布时间】:2015-03-03 12:05:50
【问题描述】:
我有一个简单的表格,其中日期列answer_6(格式为varchar(max) 有一个有效日期或字符串Now。我想用当前日期/时间替换Now,然后计算区别。这是我所做的:
select
CASE [answer_6]
WHEN 'Now' THEN CONVERT(varchar, GETDATE())
ELSE answer_6
END as x,
answer_6 from [tDataMult] where DATEDIFF(yy, GETDATE(), [x]) > 5
系统给我invalid column name 'x'。如果我删除 DateDiff SELECT 语句工作正常。
【问题讨论】:
-
SQL 只是 结构化查询语言 - 许多数据库系统使用的语言,但不是数据库产品...很多事情都是特定于供应商的 - 所以我们真的需要知道您正在使用什么数据库系统(以及哪个版本)(请相应地更新标签)......
-
很遗憾,您不能在
where子句中使用select别名;他们不被认可。您可以复制where子句中的值,但希望有人有更优雅的解决方案。 -
在 SQL Server 中,切勿在没有长度说明符的情况下使用
varchar。
标签: sql sql-server replace case datediff