PREPARATION
受験対策

Silverの例題解説
「S3.2 組み込み関数(時間関数)」

「S3 開発/SQL - S3.2 組み込み関数(時間関数)」からの出題です。

例題

3.145

以下のSQLで作成したテーブルdt_sampleがある。

create table dt_sample(pk integer primary key, dt1 date, dt2 date, ti1 time, ts1 timestamp);

このテーブルについて以下の演算をしたときの結果の説明として適切なものを3つ選びなさい。


  1. select dt1 + 10 from dt_sample; を実行すると、dt1の10日後の日付が返される。
  2. select dt2 - dt1 from dt_sample; を実行すると、dt1 から dt2 までの経過日数が整数で返される。
  3. select ti1 + 100 from dt_sample; を実行すると、ti1 の100秒後の時刻が返される。
  4. select ts1 + 10 from dt_sample; を実行すると、ts1の10日後の日時が返される。
  5. select dt1 + ti1 from dt_sample; を実行すると、dt1の日付とti1の時刻を組み合わせた日時が返される。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2022年11月30日

解答と解説

PostgreSQLのデータ型で日付・時刻などに関連したものには、日付を表すDATE型、時刻を表すTIME型、日時を表すTIMESTAMP型、時間間隔を表すINTERVAL型などがあります。

DATEには時刻が含まれず、TIMEには日付が含まれないことに注意してください。TIMEとTIMESTAMPはマイクロ秒の精度で時刻を保持します。

さて、日時に関する算術演算ですが、DATE型に整数を足し算あるいは引き算することができ、そのときの整数値は日数として扱われます。DATE型同士で引き算をすることも可能で、2つの日付の間の日数が整数で返されます。

TIMEとTIMESTAMPについては、整数との足し算や引き算をすることができません。例えばある時刻に10を足すとして、それだけの情報では10秒後なのか、10分後なのか、それとも10日後なのか、わかりませんよね。でも時間の足し算や引き算をしたいことはあります。そんなときは、INTERVAL型を使います。例えば ti1 + interval ‘100 second’ とすればti1の100秒後になりますし、ts1 + interval ’10 day’ とすれば、ts1の10日後になります。

DATEとTIMEは足し算することができて、その結果はTIMESTAMP型になります。

従って正解はA、B、Eです。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システム、AIなどの
新領域での「PostgreSQL」の採用が拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定です

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。