2012-06-03 80 views
4

是否有任何PHP函數可將當前年齡轉換爲格式爲YYYY-MM-DD的日期。我存儲在DOB在YYYY-MM-DD格式和我想要運行SQLite的查詢:將年齡轉換爲當前日期

SELECT FirstName FROM mytable WHERE DOB >= $MinAge AND DOB <= '$MaxAge'; 

我搜索谷歌年齡轉換爲日期格式,但找不到任何功能,是有任何人誰可以幫忙嗎?

+2

認爲,通過,你怎麼能轉換'32年到「1980年4月23日不知道出生年月日的一天? – davidaam

回答

5

是否有任何PHP函數現在的年齡轉換爲日期

沒有,年齡比包含日期的信息較少。一個人有三千六十六歲的可能性是X歲,但出生日期恰好映射到一個年齡段。

換句話說,如果我告訴你我20歲,並要求你告訴我我的生日,那麼你不能確定。但是,如果我告訴你我的生日,那麼你可以肯定地告訴我我的年齡。

由於您的專欄名爲DOB,因此我假定您存儲了出生日期,而不是年齡。在這種情況下,有可能獲取特定年齡段的用戶。


我們假設您想要查找年齡在18歲到50歲之間(包括18歲和50歲)的所有用戶。

對於用戶是今天18,他的生日必須是:today - 18 years

  • 之前或之後在

    • today - 19 years

    對於用戶是今天50時,他的生日一定要:

    • 之前或之後today - 50 years
    • today - 51 years

    注意, 「之前或者在」 和 「後」 僅僅 「< =」 和 「>」 表示。

    那麼,如果你想要所有18到50歲之間的用戶呢?

    你可以只取兩個外部界限:

    用戶的年齡是18和50之間IFF:
    dob <= (today -18 years) and dob > (today - 51 years)

    $lower = date('Y-m-d', strtotime('today -18 years')); 
    $upper = date('Y-m-d', strtotime('today -51 years')); 
    $query = "SELECT FirstName FROM users WHERE dob >= '$lower' AND dob < '$upper';"; 
    

    請注意,如果您之前1970年(52十歲上下的計劃日期),你應該使用DateTime而不是日期和sttrtotime(我實際上只在實際代碼中使用DateTime,但date/strtotime使得更簡單的例子)。

    以日期時間爲85年前的一個例子:

    $d = new DateTime('today -85 years'); 
    $s = $d->format('Y-m-d'); //1927-06-03 as of 3 June 2012 
    
  • +0

    高度讚賞,我會在早上嘗試一下這段代碼。 –

    +0

    還有一件事我該如何將變量添加到-85,如 $ d = new DateTime('today - $ MIN years'); 我得到錯誤 - $ MIN –

    +0

    @SaudIqbal使用雙引號。變量不會插入到單引號中。 (另外,感謝雙編輯欺騙。意外覆蓋你的編輯:p) – Corbin

    相關問題