![]()
SQLクリニック(2) Page
3/3日付データ演算の達人技を伝授する 【第1話】
株式会社インサイトテクノロジー
山下正
2005/3/26
さてさて、上記では特定の日を取得する方法を紹介しました。日付データに関する取り扱いとして、もう1つ押さえておきたいポイントがあります。それは期間です。
【月の差分(MONTHS_BETWEEN)】
特定の日と日の間の“日数”を求める場合は、非常に簡単です。DATE型の引き算で求めることができますね。この場合、例えば下記のようなSQLで、「195日間」という結果を取得することができます。
SQL> select to_date('2005/02/14','yyyy/mm/dd') |
リスト10 特定の日と日の間の“日数”を求める |
これは簡単ですね。では、これを「6カ月と11日間」という表現にするにはどうしましょうか。こちらの表現の方が期間の長さを感覚的につかみやすい人が多いのではないでしょうか。
こんな場合、MONTHS_BETWEEN関数が便利です。TRUNC関数や、ADD_MONTHS関数と組み合わせて表示してみます。
select TRUNC(months_between( date2, date1 )) months |
リスト11 関数を組み合わせた期間の計算 |
date1とdate2に先ほどの日付をセットして実行してみましょう。次のような結果が得られます。
SQL> select TRUNC(months_between( to_date('2005/02/14','yyyy/mm/dd') |
リスト12 関数を組み合わせた期間の計算(実行例) |
MONTHS_BETWEEN関数は、単純に日付と日付の間に何カ月間あるかを数えてくれる関数です。なので演算結果に端数が出てしまい、そのまま表示させると「2.2345カ月間」のような分かりにくくなってしまいます。これも先に解説したTRUNC関数で丸めるなどして、要件に応じた数値に加工して表示させた方が親切ですね。
◇
今回は、いくつか日付データの演算を行ってみました。あまり使ったことのない関数もあったのではないでしょうか。次回は、日付に関するデータ型、Oracle9iから増えたTIMESTAMP型、期間データ型について解説する予定です。(次回に続く)
| 筆者プロフィール |
| 株式会社インサイトテクノロジー Oracleに特化した製品開発、コンサルティングを手掛けるエンジニア集団。山下 正は物腰の柔らかさで緊迫した状況を和やかにしつつも、鋭い視線で問題点を指摘するシステムコンサルタント。 |
| 3/3 |
| Index | |
| 連載 SQLクリニック(2) 日付データ演算の達人技を伝授する 【第1話】 |
|
| Page
1 ・日付型データについて ・NLSパラメータを確認しておこう ・日付データの演算 |
|
| Page
2 ・特定日の取得 |
|
| Page
3 ・期間の取得 |
|
| SQLクリニック |
TechTargetジャパン
Database Expert フォーラム 新着記事
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH
