OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Verticaで日付の差分を取得したり加算・減算する方法

公開日:
更新日:
基本操作
#関数

はじめに

Verticaでは業界標準の「SQL99」に準拠しているため、汎用的な関数をそのままお使い頂くことが可能です。
この記事では日付データの扱い方について関数を使用した例をご紹介します。

関数を使用して日付の差分を取得する場合

以下のようにDATEDIFF関数を利用することで差分を求めることができます。

例1:今日(8/6)から1/1の日付の差分を取得する場合

以下例のようにVerticaではTO_DATE関数も利用できるので、文字型の日付データを扱う場合には参考にしてください。

dbadmin=> SELECT DATEDIFF('day', TO_DATE('01-01-2018','MM-DD-YYYY'),CURRENT_DATE);
 datediff
----------
      217
(1 row)

例2:今月末(8/31)から1/1の日付の差分を取得する場合

CURRENT_DATEにLAST_DAY関数を組み合わせると当月の最終日を取得できます。

dbadmin=> SELECT DATEDIFF('day', TO_DATE('01-01-2018','MM-DD-YYYY'), LAST_DAY(CURRENT_DATE));
 datediff
----------
      242
(1 row)

加算・減算などの計算式を用いて算出する場合

関数を使用せずとも「+」や「-」を使用することで日付を加算、減算することが可能です。

例1:今日(8/6)から14日後の日付を取得する場合

dbadmin=> SELECT CURRENT_DATE + 14 AS day;
    day
------------
 2018-08-20
(1 row)

以下SQL文でも同様の結果を得られます。

dbadmin=> SELECT TO_DATE('06-08-2018','MM-DD-YYYY') + 14 AS day;
    day
------------
 2018-06-22
(1 row)

例2:今月末(8/31)から1000日前の日付の取得する場合

dbadmin=> SELECT LAST_DAY(CURRENT_DATE) - 1000 AS day;
    day
------------
 2015-12-05
(1 row)

以下SQL文でも同様の結果を得られます。

dbadmin=> SELECT TO_DATE('08-31-2018','MM-DD-YYYY') -1000 AS day;
    day
------------
 2015-12-05
(1 row)

まとめ

上記の通り一般的なSQL/関数を用いてデータを操作することができます。また、JDBC/ODBC/ADO.netなどの各ドライバにも対応しているため、BIツールやETLツールとの連携もスムーズです。

汎用データベースとの関数互換表などもご用意していますので、是非Verticaをお試しください。ダウンロードはこちらから。

Vertica Community Editionのダウンロード
https://www.ashisuto.co.jp/cm/analytics-database/community-edition-download.html

「はじめてのVertica」ダウンロードのご案内
https://www.ashisuto.co.jp/cm/analytics-database/first-step-guide-for-vertica.html

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。