以前はMySQLをあまり使用していなかったため、MySQLの機能にあまり詳しくありませんでした。この問題に遭遇したとき、Baiduで検索して、次の2つの方法を見つけました。この2つの方法は、Baiduのブログで1位にランクされていました。 方法1 DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(誕生日))、'%Y')+0 AS 年齢を選択 著者はまた、方法 1 の欠陥を指摘しています。それは、日付が将来の日付である場合、結果が負の数ではなく 0 になるということです。ここでは 5 つの関数と 2 つの演算子が使用されています。 方法2 DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(誕生日, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(誕生日, '00-%m-%d')) を年齢として選択します 方法 2 は方法 1 の負の数の問題を解決しますが、より複雑で、ここでは 6 つの関数と 3 つの演算子が使用されています。 この投稿を読んだ後、私は混乱しました。なぜこんなに複雑なのでしょうか? 以前は Sql Server を使用するのは非常に簡単でした。シンプルで効率的な方法があるはずだと私は固く信じています。上記の方法を改良した方法がすぐに見つかりました。 改良方法1と方法2 year( from_days( datediff( now( ), birthdate)));を選択します。 YEAR(CURDATE())-YEAR(誕生日)-(RIGHT(CURDATE(),5)<RIGHT(誕生日,5));を選択します。 改良された方法 1 では、関数と演算子が 1 つ少なくなっています。日付が将来の場合、計算結果は依然として 0 になります。 そこで、MYSQL ヘルプ ドキュメントの日付関数に基づいた 3 番目の方法を思いつきました。 方法3 FLOOR(DATEDIFF(CURDATE(), @誕生日)/365.2422) を選択 誕生日から現在の日付までの日数を、実際の 1 年間の日数 (365 日、5 時間、48 分、46 秒) で割り、切り上げます。これは、3 つの関数と 1 つの演算子だけで実行されます。 その後、私はすぐに海外のウェブサイトで4番目の方法を見つけました。 方法4 TIMESTAMPDIFF(YEAR, @birthday, CURDATE()) を選択 この方法では、タスクを完了するために 2 つの関数のみを使用するため、これが最適な方法であるはずです。 上記の 4 つの方法をテストした後、現在の日付が「2017-1-13」で、誕生日が「2013-1-14」の場合、誕生日まであと 1 日、4 歳まであと 1 日ですが、結果は依然として 3 歳であり、妥当ではないようです。方法 3 を変更して切り捨てると、方法 5 になります。 方法5 SELECT ROUND(DATEDIFF(CURDATE(), @birthday)/365.2422) この方法で計算された年齢は実際の年齢に最も近いですが、方法 4 が年齢の定義と最も一致している可能性があります。 要約する 上記は、MySQL で誕生日から年齢を計算する方法について紹介したものです。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: ZooKeeper をベースにした Hadoop 高可用性クラスタの構築のチュートリアル図
>>: Ubuntu 18でターミナルを美しいコマンドラインプロンプトに変更する方法
1. はじめに要件は、特定の時間範囲内で、1 時間ごとのデータと前の 1 時間ごとのデータの差と比率...
目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....
<br />原文: http://andymao.com/andy/post/104.h...
矢が放たれる前に、弓は矢にささやきました。「お前の自由は私のものだ。」スキーマは矢のようなもので、弓...
目次1. グローバル beforeEach 1. グローバル beforeEach 2. 実装2. ...
序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...
これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...
サーバーサイドレンダリング (SSR) を使用する理由検索エンジンのクローラーが完全にレンダリングさ...
この記事の例では、ミニプログラムでリストカウントダウンを実装するための具体的なコードを参考までに共有...
1. Navicatの紹介1. Navicat とは何ですか? Navicat は強力な MySQ...
序文私たちの日常の開発プロセスでは、ソートが頻繁に使用され、そのような要求がある場合もあります。たと...
目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...
この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...
目次ジェネリック型での条件型の使用ツールタイプ脱出ポッド矢印関数で条件型を使用する型推論による条件型...
問題の説明フロントエンドリモート検索やファジークエリと呼ばれる種類のクエリがあります。 Ele.me...