ホームページ > データベース > mysql チュートリアル > MySQL で年齢を計算する 5 つの方法とそれぞれの利点と欠点をまとめます。

MySQL で年齢を計算する 5 つの方法とそれぞれの利点と欠点をまとめます。

零下一度
リリース: 2017-05-05 16:39:41
オリジナル
1737 人が閲覧しました

私はこれまで mysql をあまり使用したことがなかったので、mysql 関数にあまり詳しくありませんでしたが、この問題に遭遇したとき、すぐに Baidu を検索したところ、これら 2 つの方法が Baidu のブログで 1 位にランクされていました。

方法 1

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age
ログイン後にコピー

方法 1 では、作成者も欠陥を指摘しました。つまり、日付が将来の日付の場合、結果は負の数ではなく 5 つの関数と 2 つの演算子が使用されます。

方法 2

SELECT DATE_FORMAT(NOW(), &#39;%Y&#39;) - DATE_FORMAT(birthday, &#39;%Y&#39;) - (DATE_FORMAT(NOW(), &#39;00-%m-%d&#39;) < DATE_FORMAT(birthday, &#39;00-%m-%d&#39;)) AS age
ログイン後にコピー

方法 2 は方法 1 の負の数の問題を解決しますが、ここでは 6 つの関数と 3 つの演算子がより複雑に見えます。

この投稿を読んだ後、以前は SQL Server を使用するのはとても簡単だったのに、どうしてこんなに複雑だったのでしょうか?と驚きました。シンプルで効率的な方法が必ずあると私は強く信じています。上記の方法に基づいて改良された方法がすぐに見つかりました。

改善された方法 1 と方法 2

SELECT year( from_days( datediff( now( ), birthdate)));
SELECT YEAR(CURDATE())-YEAR(birthday)-(RIGHT(CURDATE(),5)<RIGHT(birthday,5));
ログイン後にコピー

改善された方法 1、関数が 1 つ減り、演算子が 1 つ欠落しました。日付が将来の日付の場合、計算結果は依然として 0 になります。
改善された方法 2、関数は 6 つあります。 3 つの演算子を使用すると、日付の右 5 桁を取得し、日付形式が「2013-01-01」の場合は「01-01」になりますが、日付形式が「2013-In」の場合は問題ありません。 1-1' の省略形式では、右側の 5 桁を取ると '3-1-1' となり、エラーが発生します。

次に、MYSQL ヘルプドキュメントの date 関数に基づいた 3 番目の方法を考えました。

方法 3

SELECT FLOOR(DATEDIFF(CURDATE(), @birthday)/365.2422)
ログイン後にコピー

誕生日と現在の日付までの日数を取得し、それを実際の日数で割ります。年(365日、5時間、48分、46秒)を切り上げます。これは 3 つの関数と 1 つの演算子のみを使用します。

その後、私はすぐに海外のウェブサイトで4番目の方法を見つけました:

方法4

 SELECT  TIMESTAMPDIFF(YEAR, @birthday, CURDATE())
ログイン後にコピー

この方法は2つの関数だけを使用しており、これが最良の方法であるはずです。

現在の日付が「2017-1-13」、誕生日が「2013-1-14」の場合、誕生日は 1 日違いで、誕生日は 4 日だけ違います。歳です。結果はまだ 3 歳ですが、これはあまり合理的とは思えません。方法 3 を変更して方法 5 を取得します。しかし、おそらく方法 4 が最も一貫した年齢定義です。

【関連する推奨事項】

1.

無料のmysqlオンラインビデオチュートリアル

2. MySQLの最新マニュアルチュートリアル

3. ブール教育ヤンシバmysql入門ビデオチュートリアル

以上がMySQL で年齢を計算する 5 つの方法とそれぞれの利点と欠点をまとめます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート