Проблема с вычислением даты

Charles Weyland
Дата: 26.01.2009 17:39:10
Нужно вывести имена тех людей в таблице, у которых возраст == 22.
Имею текущую дату (2009 год, 01 месяц, 26 день)
DECLARE @CurDate AS INTEGER;
@CurDate= '20090126';
@Age=22;
SELECT то-то то-то
FROM tblBlank
WHERE 
(@Age = (
convert(int,convert(datetime,@CurDate)-datetime,parBirthDate)*100/36525
);
Msg 102, Level 15, State 1, Procedure PRCKataRefresh, Line 31
Incorrect syntax near '@Age'.


здесь выделенная и следующая за ней строки - вычисляют возраст:
преобразовывю строку @CurDate к дате. Делаю вычитание - получаю количество дней. Из дней нужно получить количество лет (разделив на 265.25). Вот это-то я и пытался решить в той длиной строке
Glory
Дата: 26.01.2009 17:40:32
Скобочки умеете считать ?
Charles Weyland
Дата: 26.01.2009 17:40:45
забыл написать:
строка
DECLARE @Age as INTEGER
у меня присутствует в начале запроса
Charles Weyland
Дата: 26.01.2009 17:41:29
Glory
Скобочки умеете считать ?

что-то мне как-то стыдно стало немножко...
Паганель
Дата: 26.01.2009 17:42:47
Charles Weyland
Из дней нужно получить количество лет (разделив на 265.25)
Интересная формула, откуда взяли?
И результат деления на дробное число будет целым, Вы уверены?
Supra93
Дата: 26.01.2009 17:43:08
Charles Weyland
Дата: 26.01.2009 17:43:38
не-не, у меня в оригинальной проге нормально скобочки стоят. Я переписал сюда с ошибкой.

DECLARE @CurDate AS INTEGER;
DECLARE @Age AS INTEGER;
@CurDate= '20090126';
@Age=22;
SELECT то-то то-то
FROM tblBlank
WHERE 
(@Age = (
convert(int,convert(datetime,@CurDate)-datetime,parBirthDate)*100/36525
));
Msg 102, Level 15, State 1, Procedure PRCKataRefresh, Line 31
Incorrect syntax near '@Age'.


ошибка не в скобочках
Charles Weyland
Дата: 26.01.2009 17:45:00
Паганель
Charles Weyland
Из дней нужно получить количество лет (разделив на 265.25)
Интересная формула, откуда взяли?
И результат деления на дробное число будет целым, Вы уверены?

да я сам придумал))
я не делю на дробное.
Я делю на целое, поскольку если разделить на дробное, то и результат у меня дробный получается. Я избавляюсь от запятой, домножая на 100 )))
Glory
Дата: 26.01.2009 17:46:51
Потому что синтаксис не нужно выдумавать.
Как, например, вы выдумали синтаксис присвоения значения переменной
Charles Weyland
Дата: 26.01.2009 17:47:35
Supra93
DATEDIFF (Transact-SQL)

о! это решает проблему! благодарю ;-)