2007年6月5日火曜日

TRUNC関数で日付の切捨て(Oracle/SQL)

スズキです。

日付を持ってるデータを年/月でグルーピングすることはよくあります。
そのときに、Oracle(SQL)の表記の関数(TRUNC)が役に立ちます。
http://jibun.atmarkit.co.jp/lskill01/rensai/bronzesql03/bronzesql01.html

TRUNC(SAMPLE_DATE, 'MM')
とすると、日や時間がどんな値であっても、1日の0時0分0秒になります。
※SAMPLE_DATEはDATE型のカラムとします

なので、データが存在する年/月を降順で抽出したい場合は、

SELECT DISTINCT
  TRUNC(SAMPLE_DATE, 'MM') as YYYYMMDD
FROM SAMPLE_TABLE
ORDER BY YYYYMMDD DESC

で実現することができます。

四捨五入はROUND関数で同じようなことができます。

やっぱり、SQLだね。(O-R Mapping はほどほどに)

--
blog: http://suz-lab.blogspot.com/

0 コメント: