Twig
TwigにはPHPの関数が使えないので計算で出します。birthdayには日付型のデータが入っているとして
{% set age = "now"|date('Y') - birthday|date('Y') %} {% if ("now"|date('m/d') < birthday|date('m/d')) %} {% set age = age -1 %} {% endif%}
で出ます。
(今年 - 誕生日年)
をして年を外した日付で比較して誕生日が来てなかったら1引くというロジックですね。
PHP
PHPはtime()で引き算したりいろいろあるのですが個人的に一番好きな方法をご紹介します。ついでにDateTimeクラスのdiff()は5.3以降のPHPじゃないと動きません。
$birthday = new \DateTime("'2014-06-04'"); $now = new \DateTime(); $interval = $now->diff($birthday); $age = $interval->y;
MySQL
MySQLはTwigと同様に計算で出します。SELECT (YEAR(CURDATE()) - YEAR(birthday)) - (RIGHT(CURDATE(), 5) < RIGHT(birthday, 5)) AS age FROM member
PostgreSQL
PostgreSQLにはage関数があります。日付/時刻関数と演算子
なので単純に
SELECT age(now(),birthday) FROM hoge
で差分の日付型が帰ってくるので頭の年を取得して。
SELECT extract(year from age(now(),birthday)) AS age FROM hoge
こんな感じです。
むしろPostgreSQLはFrom句が無くても動くので
SELECT extract(year from age(now(),date '2013-06-04')) AS age SELECT extract(year from age(now(),now() + '-10 year')) AS age
とか動きます。
と言うことでよく使う年齢の計算方法でした。
0 件のコメント:
コメントを投稿