mysql разница в месяце в виде колонки в предложении where - PullRequest
0 голосов
/ 18 января 2012

нужна твоя помощь.Я попробовал себя, но не могу решить это.

У меня есть таблица со столбцом даты (например, рождение), поэтому мне нужно выбрать все строки, где рождение было в прошлом более одного месяца.

Я гуглил и обнаружил схожий вопрос Разница в месяцах между датами в MySQL

Но к этому новому периоду нет условийМой неправильный запрос:

select id,period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) as months 
from t1
where months>0 
limit 10

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вы не можете использовать ALIAS в пункте WHERE

SELECT id,
       period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) as months 
FROM   t1
WHERE period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) > 0 
LIMIT 10
2 голосов
/ 18 января 2012

Попробуйте ниже:

использование having (ALIAS месяцев в WHERE пункт здесь не работает)

select id,period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) as months 
from t1
having months>0 
limit 10

HAVING похоже на WHERE, но может работать с вычисляемыми столбцами (Alias). HAVING работает путем сокращения результатов после выполнения остальной части запроса - он не заменяет предложение WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...