現在の年齢をYYYY-MM-DD
形式で日付に変換する PHP 関数はありますか。DOB をYYYY-MM-DD
フォーマットで保存し、SQLite クエリを実行したい:
SELECT FirstName FROM mytable WHERE DOB >= $MinAge AND DOB <= '$MaxAge';
年齢を日付形式に変換するために Google を検索しましたが、関数が見つかりませんでした。
現在の年齢を日付に変換するPHP関数はありますか
いいえ、年齢には日付よりも少ない情報が含まれています。人が X 歳になる可能性は 365 通りありますが、生年月日は正確に 1 つの年齢にマッピングされます。
つまり、私が 20 歳だと言って、誕生日を教えてほしいと頼んだとしても、確実に言えません。しかし、もし私があなたに私の誕生日を言うなら、あなたは確実に私の年齢を教えてくれます.
あなたの列はDOBと呼ばれているので、年齢ではなく生年月日を保存していると思います。このような状況では、特定の年齢層のユーザーを取得することができます。
18 歳から 50 歳までのすべてのユーザー (18 歳から 50 歳を含む) を検索するとします。
ユーザーが今日 18 歳であるためには、そのユーザーの誕生日は次のとおりである必要があります。
today - 18 years
today - 19 years
ユーザーが今日 50 歳になるには、誕生日が次のようになる必要があります。
today - 50 years
today - 51 years
「前または上」と「後」は、それぞれ「<=」と「>」であることに注意してください。
では、18 歳から 50 歳までのすべてのユーザーを取得するにはどうすればよいでしょうか。
2 つの外側の境界を取ることができます。
ユーザーの年齢が 18 歳から 50 歳の場合:
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-ish) より前の日付を計画している場合は、date と sttrtotime の代わりにDateTimeを使用する必要があることに注意してください(実際には、実際のコードでは DateTime のみを使用しますが、date/strtotime はより簡単な例を作成します)。
DateTime を使用した 85 年前の例:
$d = new DateTime('today -85 years');
$s = $d->format('Y-m-d'); //1927-06-03 as of 3 June 2012