はじめに
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で確認しています。