サイトアイコン Lonely Mobiler

SQLで誕生日から特定の年齢のリストを出す。

こんなクエリ仕事じゃないと使わないよなあ。

# select * from test where extract(year from age(current_timestamp,birthday)) between 20 and 30;

Postgresでしか試してない。

--

追記

# select * from test where age(birthday) between 20 and 30;

これでもできた。こっちが単純。age()に渡す引数を一つにすると現在時刻から計算してくれる。extract()は時間から特定のフィールド(月とか分とか)を抜き出すのに使うと書いてあるのだけど、となると何で同じ結果になるのか一瞬わかんなかった。なので軽く試してみた。

age()の返り値がintervalになるわけだが、この数値というのが、時間の間隔を表してる。

# select age(timestamp '1957-06-13');
age
-------------------------
49 years 11 mons 3 days
(1 row)

そこからyearだけを切り取るから

# select extract(year from age(timestamp '1957-06-13'));
date_part
-----------
49

年だけ表示されるわけですね。intervalなんて型初めて知ったよ。

Sponsored Link
モバイルバージョンを終了