подзапросов должны быть заключены в круглые скобки:
SELECT DATEDIFF(
(SELECT hiredate FROM emp
WHERE ename LIKE 'SMITH'),
(SELECT hiredate FROM emp
WHERE ename LIKE 'ALLEN')
) FROM emp;
Вы на самом деле не нужен окончательный from emp
, если вы не хотите много строк:
SELECT DATEDIFF(
(SELECT hiredate FROM emp
WHERE ename LIKE 'SMITH'),
(SELECT hiredate FROM emp
WHERE ename LIKE 'ALLEN')
);
Другой способ, чтобы написать этот запрос:
select datediff(max(case when ename like 'SMITH' then hiredate end),
max(case when ename like 'ALLEN' then hiredate end)
)
from emp
where ename in ('SMITH', 'ALLEN');
Адванта ge этого запроса состоит в том, что он только считывает таблицу emp
.
EDIT: (около месяца)
MySQL не имеет встроенную возможность вычисления месяцев между значениями. Приближение будет days/30.4
. Вы можете использовать period_diff()
. Но если это важно, задайте другой вопрос и укажите примеры того, что вы подразумеваете под разницей в месяцах (в чем разница между «2014-01-31» и «2014-02-01»? Между «2014-01-12» 'и' 2014-02-11 '? Между' 2014-01-01 'и' 2014-01-31 '?).
Я хочу, чтобы разница в месяцах, а не дней ... Что я могу сделать? –