連載
» 2005年04月28日 00時00分 公開

日付データ演算の達人技を伝授する 【第2話】SQLクリニック(3)(3/3 ページ)

[山下正,株式会社インサイトテクノロジー]
前のページへ 1|2|3       

期間データ型の年月演算

 さて、1/24方式でDATE型のデータの「日」と「時分秒」を計算できることは前回に解説したとおりです。しかし、月の計算は1/24方式では対応できずADD_MONTHS関数を使いました。

 実は期間データ型の場合も、年月演算用の関数や演算子が別途用意されています。これを使用することで、先ほどと同様に可読性の高い記述が可能になります。

 では期間データ型を利用して、現在時刻から1年6カ月後の日付を取得してみましょう。

SQL> SELECT
       SYSDATE,
       SYSDATE + TO_YMINTERVAL('1-6') TARGET_DATE
     FROM dual;
SYSDATE             TARGET_DATE
------------------- -------------------
2005/04/08 02:47:29 2006/10/08 02:47:29
リスト8 期間データ型による年月演算(その1)
SQL> SELECT
       SYSDATE,
       SYSDATE + INTERVAL '1-6' YEAR TO MONTH TARGET_DATE
     FROM dual;
SYSDATE             TARGET_DATE
------------------- -------------------
2005/04/08 02:48:39 2006/10/08 02:48:39
リスト9 期間データ型による年月演算(その2)

 もちろん年月と日付時刻の合わせ技も可能です。

SQL> SELECT
       SYSDATE,
       SYSDATE + INTERVAL '1-6' YEAR TO MONTH
               + INTERVAL '10' DAY TARGET_DATE
     FROM dual;
SYSDATE             TARGET_DATE
------------------- -------------------
2005/04/08 02:50:15 2006/10/18 02:50:15
リスト10 年月と日付時刻の計算を組み合わせる

 可読性が高いということは、デバッグの効率化という点についてもメリットがあります。ぜひ試していただきたいテクニックです。

 SQLを書き始めて間もないプログラマの皆さんは、日付データに関する演算について少しは整理できたでしょうか。また、日付データの演算なんて簡単・簡単と思われていた皆さん、期間データ型を使った演算は理解されましたか。

 日付データの演算についてはここまでです。関数の使い方については、詳細な説明がオラクル社のマニュアルに記載されていますので、この記事の内容を理解された方は、再度マニュアルを確認してみてください。


 さて次回は、Oracle9iから導入されたタイムゾーンについて解説する予定です。(次回に続く)

筆者紹介

株式会社インサイトテクノロジー

Oracleに特化した製品開発、コンサルティングを手掛けるエンジニア集団。大道隆久は緊迫したトラブル現場でも常に冷静沈着であり、スマートに解決へと導いていくシステムコンサルタント。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。