
初投稿ですので至らぬ点があればすいません。
現在サーブレットを学習中で、今つまづいているのがタイトル通りデータベース(以下DB)内の生年月日の情報を用いて、年齢を算出するという問題です。
DB内の情報はすでに
String sql = "SELECT * FROM テーブル名";
と持ってきており、すでに他の情報を表示させることはできています。
このなかの誕生日(カラム名はbirthday)の情報から誕生日を算出するにはどうすればよいのでしょうか。
現在の日付から誕生日の日付を引くのかと思うのですがそこらへんを詳しく解説いただければ幸いです。
どうぞ宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
別にサーブレットで計算してもたいしたことないし、DBに依存しないで処理をかける。
#SQLは日付の方言が激しいので・・・
java.util.Date型で日付が来るならこんなメソッドを用意すればおしまい。
public int getAge(Date birthDate) {
Calendar now = Calendar.getInstance();
Calendar birth = Calendar.getInstance();
birth.setTime(birthDate);
int age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
if (now.get(Calendar.MONTH) < birth.get(Calendar.MONTH) ||
now.get(Calendar.MONTH) == birth.get(Calendar.MONTH) &&
now.get(Calendar.DAY_OF_MONTH) < birth.get(Calendar.DAY_OF_MONTH)) {
age--;
}
return age;
}
No.3
- 回答日時:
RDBMS名だけでなく、バージョンも明記するようにしてください。
特にMySQLは、MySQL 5.x.xのレベルまで提示してください。MySQLでは、突然、大きな機能拡張や仕様変更が行われることがあります。
birthday列のデータ型は、DATEですか?もしそうなら、日時の関数で容易に年齢を求められます。もし、文字や数値のデータ型なら、日付のデータ型への変換も加える必要があります。
SELECT *,TIMESTAMPDIFF(YEAR,birthday,CURDATE()) AS age
FROM tbl
ageは、年齢の計算結果に付けた別名で、列と同様の方法で、結果を参照できます。
https://dev.mysql.com/doc/refman/5.6/ja/date-cal …
No.1
- 回答日時:
DBは何を使っているんですか?
年齢を求めるのに、いちいちサーブレット側で処理する必要はないでしょう。
例えばMySQLならば
SELECT *, TRUNCATE(DATEDIFF(CURRENT_DATE(), birthday) / 365, 0)
AS age
FROM テーブル名
とかでいけるんでは。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- 誕生日・記念日・お祝い 誕生日デートについて 僕は現在大学一年生で、もうすぐ彼女の誕生日があります。プレゼント自体はもう買っ 2 2023/05/31 02:32
- SQL Server SQLについて質問です。 日付値の計算の練習で、dual表を用いて、 今日の日付、誕生日、生まれてか 1 2022/05/13 20:42
- カードローン・キャッシング 信用情報機関CICについて。 独身時代に恥ずかしながら、ショッピング代金の引き落とし延滞が2-3ヶ月 1 2023/07/06 21:44
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- 浮気・不倫(恋愛相談) 誕生日を偽ってしまった 5 2023/07/25 01:30
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- 大学受験 担任が無理です 6 2022/10/18 23:21
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
final修飾子を使っているのに、...
-
配列のメソッド
-
mainメソッドのthrows節で設定...
-
JSPで<SELECT>の中にDBから持っ...
-
boolean型のフィールドとゲッタ...
-
javascriptからjavaを呼び出したい
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
DBunitの期待値についての質問...
-
FEM解析の読み方は?
-
VB.netで、シリアル通信のタイ...
-
処理内容がほぼ同じメソッドの...
-
離れた列をvbaで数値で選択する...
-
VBAでAccessからExcelのセルフ...
-
【sendkeysメソッドが動かずに...
-
タグチメソッドと実験計画法の違い
-
VB.NET2017 の IntelliSense に...
-
Application.Wait の参照設定
-
ポストバック時のDatasourceバ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
mainメソッドのthrows節で設定...
-
VBA コピーが出来ません…!
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
0歳児の指しゃぶりに関して
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
配列のメソッド
-
CALLされていないメソッドを見...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
VBPをダブルクリックするとたま...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
Application.Wait の参照設定
-
C#.net Define文
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA でExcelを終了したい...
おすすめ情報
使用しているのはMysqlです。
後付けで申し訳ないのですが今行っているのがDB内の個人情報のテーブルからレコードを引き出して、それをDaoからjspに渡し、htmlで表にして表示、というものです。
sqlで年齢を計算した場合、それを他の情報と紐付けて表の同じ列に表示することは可能なんでしょうか。
一応現在の処理の流れを画像で記載します。(詳しく書こうとしたら文字数制限に引っかかってしましました、申し訳ないです)
この流れに沿って表示させたいのですがどうすればよいのでしょうか。