こんなクエリ仕事じゃないと使わないよなあ。
# 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