У меня есть простая таблица, где дата столбец answer_6
(форматированный в varchar(max)
либо имеет действительную дату или строку Now
. Я хотел бы заменить Now
с текущей даты/времени, а затем вычислить разность . Вот что я сделал:SQL заменить с помощью SELECT, и недопустимый столбец
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 *** - это только * Структурированный язык запросов * - язык, используемый многими системами баз данных, но не продукт базы данных ... многие вещи специфичны для поставщиков, поэтому нам действительно нужно знать, что * * система баз данных ** (и какая версия) вы используете (пожалуйста, обновите теги соответственно) .... –
К сожалению, вы не можете использовать псевдонимы 'select' в своих предложениях' where'; они не признаются. Вы можете дублировать значение в предложении 'where', но, надеюсь, у кого-то есть более элегантное решение. – Jacob
Возможный дубликат [Использование псевдонимов в разделе Where или альтернативный вариант?] (Http://stackoverflow.com/questions/7705470/using-aliases-in-where-clause-or-an-alternative-option) – Jacob