2012-04-25 39 views
0

から最速の年齢の計算式は、私は、ユーザーの年齢をカルクするために、このクエリを使用しています:年齢計算 - タイムスタンプフィールド

SELECT 
((YEAR(CURDATE())-YEAR(um.date_birth)) - (RIGHT(CURDATE(),5)<RIGHT(um.date_birth,5))) 
FROM user_meta AS um 
WHERE um.uid = 2 

私はそれを行うための最速/軽量な方法があるかどうだろうか。 私はこれをより大きな選択でネストして使用していますので、どういうわけか全体的なパフォーマンスを向上させることに気をつけます。ありがとうございました。

+0

これらのクエリの1つはどれくらいかかりますか? – Ozzy

+0

date_birthフィールドのデータ型は何ですか? – heximal

+0

このクエリは、ページが読み込まれるたびに実行されますか?または、それは必要に応じて実行されていますか? – maiorano84

答えて

1
select (CURDATE()-birth_dt)/365 from dual 
+0

ありがとうございます。実際には次のようになります。 SELECT(YEAR(CURDATE()) - YEAR(um.date_birth))FROM dual; 非常に短く、ありがとう! –

+0

この回答では、366日間の閏年は考慮されていません – Muleskinner

1

フィールドをあまりにも頻繁に計算する必要がある場合は、テーブルを変更して新しい列を追加して計算を行うことをお勧めします。

たとえば、各クエリの生年月日ごとにYEARを計算するのではなく、YEAR列を単純に追加し、テーブルONCEを生年で更新し、年としてINTを格納します。

そのように、年をキャッチする必要があるたびに、フィールドを選択するだけです。

+0

イェップ、それは賢いだろう。ありがとうございました。 –

関連する問題