Допустим, у нас есть база данных MYSQL, «сотрудники».
База данных содержит столбец «EXP», который содержит строку, обозначающую людей НАЧАЛО ДАТЫ … пример: «2015-01-11» (в формате: гггг-мм-дд)
Я хотел бы, чтобы запросы к базе данных возвращали переменную «опыт», которая рассчитывается путем сравнения текущей даты с датой, содержащейся в столбце EXP.
Это самая последняя попытка; что я пытаюсь
SELECT phone, name, (DATEDIFF('CURDATE()','EXP') AS experience, bio, photo, FROM squad
Можете ли вы сказать, что я пытаюсь сделать? Если кто-нибудь знает правильный код для размещения здесь, он будет очень признателен.
Обратите внимание, если я просто заменю код
(DATEDIFF('CURDATE()','EXP') AS experience
с «EXP», то нет ошибок, и все работает, как ожидалось.
у вас есть дополнительные скобки, а ‘EXP’ будет использовать строковый литерал, а не поле db
SELECT phone, name, DATEDIFF(now(), exp) AS experience, bio, photo
FROM squad
рабочая демонстрация: http://sqlfiddle.com/#!9/79e87/2
Пытаться
SELECT phone, name, (DATEDIFF(CURDATE(),'EXP') AS experience, bio, photo, FROM squad
Из того, что я понял из вашего вопроса и из оператора select, я думаю, что у вас просто неправильный синтаксис, проверьте приведенный ниже запрос
SELECT phone, name, DATEDIFF(now(), exp) AS experience, bio, photo
FROM squad
Удалить кавычки вокруг CURDATE (), это функция, поэтому кавычки не нужны
SELECT phone, name, (DATEDIFF(CURDATE(), EXP) AS experience, bio, photo, FROM squad
Попробуйте этот запрос,
SELECT
phone, name,
CONCAT(
FLOOR(TIMESTAMPDIFF(MONTH,exp,CURDATE())/12),
' Year(s), ',
(TIMESTAMPDIFF(MONTH,exp,CURDATE())%12),
' Month(s)'
) AS experience,
bio, photo
FROM
squad;