5

現在の年齢をYYYY-MM-DD形式で日付に変換する PHP 関数はありますか。DOB をYYYY-MM-DDフォーマットで保存し、SQLite クエリを実行したい:

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

年齢を日付形式に変換するために Google を検索しましたが、関数が見つかりませんでした。

4

2 に答える 2

7

現在の年齢を日付に変換する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
于 2012-06-03T07:22:08.117 に答える