2016-05-17 5 views
0

Предположим, у нас есть база данных MYSQL, «сотрудники».Вычислить разницу дат в MySQL и PHP

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

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

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

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

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

Пожалуйста, обратите внимание, что если я просто заменить код

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

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

+0

какой результат ожидается? CURDATE() - это функция, она не должна указываться. и EXP - это поле, поэтому храните его, как есть без цитаты. DIDIFF, конечно, не даст вам никаких дней взамен, рассчитайте ожидаемый формат на стороне приложения. – Hytool

+0

Я хочу переместить вычисления на сервер ... Я получил этот совет от разработчиков Android на youtube. :) Спасибо за ваш комментарий. До сих пор ничего не работает. –

+0

опубликуйте результат, Hytool

ответ

2

у вас есть дополнительные кронштейны и «EX P»будет использовать строковый литерал не поле БД

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

работает демо: http://sqlfiddle.com/#!9/79e87/2

+0

Да, у меня были дополнительные скобки ... СПАСИБО !!! ПРОСТИ! lol ... –

+0

ваши котировки были неправильными, но все хорошо ;-) –

+0

BUT .... теперь все результаты показывают опыт = null в ответе JSON .... хотя есть дата, определенная в базе данных. Но ... вы нашли основную проблему, спасибо, –

0

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

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

3 открытые, но 2 закрывающие скобки –

+0

Спасибо за ваш ответ, но я сожалею, что это не работает в моем случае. –

+0

@BooberBunz вы можете лучше объяснить свое дело –

0

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

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

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

+0

Спасибо за ваш ответ, но я сожалею, что это делает похоже, не работает в моем случае. –

+0

ребята, я новичок, пожалуйста, не снижайте :( –

0

Попробуйте

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

Спасибо за ваш ответ, но я сожалею, что это не работает в моем случае. –

+0

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

+0

ребята, я новые просьбы e dont downvote :( –

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

Спасибо Hytool ... Я понял это сейчас с помощью каждого ... секрет: –

+0

"DATEDIFF (сейчас(), EXP) AS опыт" –

+1

да, был Дополнительный кронштейн! Я попытался дать вам читаемый формат, попробуйте, если он может быть использован ! – Hytool

Смежные вопросы