我正在設置一個腳本,以便每日運行並檢查是否滿足特定年齡的成員 - 可以在CMS中設置自動發送的電子郵件,並將其分配給任何年齡的用戶,可以在幾個月或幾年內發送。爲了通過PHP和MySQL來處理這個問題,將月數作爲參數傳遞給一個方法,我將如下處理它。但是,我不確定我是以最簡單的方式來解決這個問題的!部分原因是由於英國日期格式的格式化,我將字符串轉換爲日期時間轉換爲unix時間戳以進行比較。 任何人都可以找到一個更好的方式去做這件事嗎?由於MySQL日期比較建議
// If num of months provided is a year, make calculation based on exact year
if ($age_in_months % 12 == 0)
{
// Using 365 days here (60 * 60 * 24 * 365 = 3153600)
$clause = 'WHERE ROUND((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(STR_TO_DATE(dob, "%d/%m/%Y")))/31536000) = ' . $age_in_months;
}
else
{
// Using 30 days as avg month length (60 * 60 * 24 = 86400) - convert months to days
$clause = 'WHERE ROUND((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(STR_TO_DATE(dob, "%d/%m/%Y")))/86400) = ' . $age_in_months * 30;
}
不要傻瓜,以適當的格式存儲日期。這就是你必須先做的。 – 2010-12-20 20:15:26
查看下面的評論,我堅持在這裏的日期存儲格式 – spinozf 2010-12-22 09:55:03