Если кто-то все еще ищет решение в MySQL (немного другие команды), вот запрос:
SELECT
name,birthday,
FLOOR(DATEDIFF(DATE(NOW()),birthday) / 365.25) AS age_now,
FLOOR(DATEDIFF(DATE_ADD(DATE(NOW()),INTERVAL 30 DAY),birthday) / 365.25) AS age_future
FROM user
WHERE 1 = (FLOOR(DATEDIFF(DATE_ADD(DATE(NOW()),INTERVAL 30 DAY),birthday) / 365.25)) - (FLOOR(DATEDIFF(DATE(NOW()),birthday) / 365.25))
ORDER BY MONTH(birthday),DAY(birthday)
Папа Римский Kevin комментарий в соответствии с принятым ответом был тем, в чем я нуждался.
проблема, в моем случае, состояла в том, что у меня были триггеры, определенные на моей таблице, которая вставит, обновляют/вставляют транзакции в контрольную таблицу, но контрольная таблица имела неверный тип данных, где столбец с VARCHAR(MAX)
в исходной таблице был сохранен как VARCHAR(1)
в контрольной таблице, таким образом, мои триггеры перестали работать, когда я вставлю что-либо большее, чем VARCHAR(1)
в исходном столбце таблицы, и я получил бы это сообщение об ошибке.