2016-05-17 67 views
0

假設我們有一個MYSQL數據庫'employees'。計算MySQL和PHP中的日期差異

該數據庫包含一個列, 「EXP」,其中包含的String標誌着者開始日期...例如: 「2015年1月11日」(格式:YYYY-MM-DD)

我會比如數據庫查詢返回一個變量「experience」,該變量通過比較當前日期和EXP列中包含的日期來計算。

這是最近的嘗試;我在想什麼:

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

你能告訴我在做什麼嗎?如果有人知道正確的代碼放在這裏,將不勝感激。

請注意,如果我只需更換代碼

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

以「EXP」,則沒有任何錯誤,一切都按預期工作。

+0

預期什麼結果? CURDATE()是一個函數,它不應該被引用。並且EXP是字段,所以保留它,因爲它沒有quote.DATEDIFF肯定會給你沒有天的回報,在應用程序端計算你的預期格式。 – Hytool

+0

我想將計算移動到服務器...我從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

是的,我有額外的括號....謝謝!抱歉!大聲笑... –

+0

你的報價是錯的,但一切都很好;-) – 2016-05-17 04:01:40

+0

但是....現在所有的結果都顯示JSON響應中的experience = null ....即使在數據庫中定義了一個日期。但是...你發現主要問題,謝謝你, –

0

從我從你的問題,並從select語句的理解,我覺得你只是有一個錯誤的語法檢查下面的查詢

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

3打開,但2關閉括號 – 2016-05-17 03:52:38

+0

謝謝你的迴應,但我很抱歉地說,似乎並沒有在我的情況。 –

+0

@BooberBunz你能解釋你的情況更好 –

0

刪除周圍CURDATE()的報價,它是功能,所以報價不需要

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

''EXP''將使用字符串字面不是數據庫價格 – 2016-05-17 03:52:20

+0

謝謝你的迴應,但我很抱歉說這樣做在我的情況下似乎沒有工作 –

+0

球員我是新的請不要downvote :( –

0

嘗試

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

謝謝你的迴應,但我很抱歉地說,似乎並沒有在我的情況下工作。 –

+0

''EXP''將使用字符串字面不是數據庫價格 – 2016-05-17 03:53:21

+0

傢伙我是新的請求不要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(now(),EXP)AS experience」 –

+1

yes,there was an額外支架!我試圖給你差異可讀的格式,嘗試它,如果它可以使用 ! – Hytool