2016-10-30 48 views
-1

TIMESTAMPDIFFTIMESTAMPDIFF - 如何使用它在PHP/MySQL的計算日期之間的差值

上面的鏈接幫助我但是如何計算兩個日期的差異,我需要做同樣的在特定列在運行時通過MySQL選擇PHP內部的查詢。

例如:

檔案表:

  • 名稱
  • 性別
  • DOB(出生日期)

運行通過MySQL的控制檯下面的查詢,給出了準確所需結果:

SELECT TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS Age FROM profile; 

不過,我需要完成以下查詢來獲取我相同的結果與整套DOB值的其他條件相結合:

SELECT * FROM Profile WHERE Gender='$gn'; 

我查子查詢,但是,不會因工作多個返回值。

+0

它是'profile'與'Profile'相同嗎?然後,您可以將第一個查詢的計算列添加到第二個查詢的字段列表中。 – akrys

+0

他們是一樣的。你能否在你提到的時候爲我寫這個查詢,這會有所幫助。 – Kam

回答

0

正如你所說,這是同一個表,你可以使用此查詢:

SELECT *,TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS Age 
FROM Profile 
WHERE Gender='$gn'; 

然後你就會在結果集中找到一個附加字段age

+0

這個查詢可以工作,但是當使用Age作爲WHERE子句的一部分時,MySQL會將年齡報告爲未知列。 #1054 - 'where子句'中的'Age'未知列。 **我試圖達到基於此查詢的結果... SELECT *,TIMESTAMPDIFF(年,DOB,CURDATE())AS年齡從配置文件where性別=「男性」和(年齡介於20和30之間); * * – Kam

+0

發生這種情況是因爲此字段是在選擇完成後命名的。 MySQL過濾where-statments的時間,這個列還沒有創建。在這種情況下,您需要添加having子句。這在選擇完成後運行。試試這個:'SELECT *,TIMESTAMPDIFF(YEAR,DOB,CURDATE())AS年齡從配置文件where性別=「男性」有(年齡在20和30之間);' – akrys

+0

按需要工作。 – Kam

相關問題