Рассчитать разницу в датах в MySQL и переполнении стека

Допустим, у нас есть база данных MYSQL, «сотрудники».

База данных содержит столбец «EXP», который содержит строку, обозначающую людей НАЧАЛО ДАТЫ … пример: «2015-01-11» (в формате: гггг-мм-дд)

Я хотел бы, чтобы запросы к базе данных возвращали переменную «опыт», которая рассчитывается путем сравнения текущей даты с датой, содержащейся в столбце EXP.

Это самая последняя попытка; что я пытаюсь

SELECT phone, name, (DATEDIFF('CURDATE()','EXP') AS experience, bio, photo,  FROM squad

Можете ли вы сказать, что я пытаюсь сделать? Если кто-нибудь знает правильный код для размещения здесь, он будет очень признателен.

Обратите внимание, если я просто заменю код

(DATEDIFF('CURDATE()','EXP') AS experience

с «EXP», то нет ошибок, и все работает, как ожидалось.

0

Решение

у вас есть дополнительные скобки, а ‘EXP’ будет использовать строковый литерал, а не поле db

    SELECT phone, name, DATEDIFF(now(), exp) AS experience, bio, photo
FROM squad

рабочая демонстрация: http://sqlfiddle.com/#!9/79e87/2

2

Другие решения

Пытаться

SELECT phone, name, (DATEDIFF(CURDATE(),'EXP') AS experience, bio, photo,  FROM squad
0

Из того, что я понял из вашего вопроса и из оператора select, я думаю, что у вас просто неправильный синтаксис, проверьте приведенный ниже запрос

SELECT phone, name, DATEDIFF(now(), exp) AS experience, bio, photo
FROM squad
0

Удалить кавычки вокруг CURDATE (), это функция, поэтому кавычки не нужны

SELECT phone, name, (DATEDIFF(CURDATE(), EXP) AS experience, bio, photo,  FROM squad
0

Попробуйте этот запрос,

    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;
0
По вопросам рекламы [email protected]