CData ドライバーで日時を扱う



企業のレポートや分析において、日付と時刻は欠かせない要素です。四半期ごとのレポート作成から、過去1年間の利益推移のビジュアライゼーションまで、さまざまな場面で活用されています。CData ドライバーは、SQL クエリで日時を扱うための包括的なサポートを提供しています。特定の期間のデータを簡単にクエリしたり、特定のクエリで使用する日時のロケールを設定したりできます。この機能は、120を超えるすべてのデータソースでご利用いただけます。この記事では、利用可能な機能の詳細と、特定の日時に基づいてデータを操作するためのサンプル SQL クエリを紹介します。

SQL クエリでの日時カラム

サポートされているほとんどのデータソースでは、CData ドライバーは動的なメタデータクエリに基づいて、特定のエンティティのどのフィールドが日時として扱われるかを判断できます。厳密な型付けがない(または型付けがまったくない)データソースの場合、ドライバーは既存データのサンプルをスキャンして、どのフィールドが日時であるかを判断します。

可能な限りパラメータ化クエリを使用する

日時カラムを含む SQL 関数をプログラムで構築する場合は、パラメータを使用することをお勧めします。特に、お使いの開発環境で提供されている date 型や datetime 型の組み込みオブジェクトを活用してください。これにより、タイムゾーン、日時フォーマット、その他のよくある問題を回避できます。とはいえ、CData ドライバーは日時カラムを扱うための充実したサポートを提供しています。

サポートされる機能

  • ドライバーから返される日時の値は、すべてローカル時刻で表現されます。
  • 日時リテラルでタイムゾーンが指定されていない場合(例:'12/25/2018T00:00:00-04:00')、現在のロケール/タイムゾーンが使用されます。
  • シンプルな TODAY() から、より複雑な NEXT_N_WEEKS(n) まで、日付リテラル関数がサポートされています。
  • DATEADD(datepart, integer, date)DATEPART(datepart, date) など、日付を操作したり日付の一部を取得したりする日付関数がサポートされています。

サンプルクエリ

以下に、さまざまなデータソースからの SQL クエリで日時を扱うためのサンプルクエリと、クエリがどのように変換されるかの簡単な説明を示します。

今四半期に開始した HubSpot タスクを取得する

SELECT * FROM HubSpot.Tasks WHERE HubSpot.Tasks.StartDate = THIS_QUARTER()

このクエリの条件は、AND 演算子で結合された2つの個別のフィルターに変換されます:

  1. 今四半期の初日以降の日付
  2. 来四半期の初日より前の日付

例えば、今日が2018年7月10日の場合、フィルターは次のようになります:StartDate >= 07/01/2018 AND StartDate < 10/01/2018

先週作成された新しい Salesforce 商談を取得する

SELECT * FROM Salesforce.Opportunity WHERE Salesforce.Opportunity.CreatedDate = LAST_WEEK()

このクエリの条件は、AND 演算子で結合された2つの個別のフィルターに変換されます:

  1. 先週の初日以降の日付
  2. 今週の初日より前の日付

例えば、今日が2018年7月10日の場合、フィルターは次のようになります:CreatedDate >= 07/01/2018 AND CreatedDate < 07/08/2018

前年の11月に最終更新された QuickBooks Online アカウントを取得する

SELECT * FROM QuickBooksOnline.Accounts WHERE QuickBooksOnline.Accounts.MetaData_LastUpdatedTime = LAST_YEAR() AND DATEPART('m', QuickBooksOnline.Accounts.MetaData_LastUpdatedTime) = 11

このクエリの条件は、AND 演算子で結合された3つの個別のフィルターに変換されます:

  1. 2年前の年末日以降の日付
  2. 今年の初日より前の日付
  3. 月の部分が11である日付

クエリプッシュダウン

上記のクエリでは、ドライバーは年に基づくフィルターをプッシュダウンしますが、QuickBooks Online は月の部分によるフィルタリングをサポートしていません。今日が2018年7月10日の場合、プッシュダウンされるフィルターは次のようになります:MetaData_LastUpdatedTime >= 12/31/2016 AND MetaData_LastUpdatedTime < 01/01/2018

クライアントサイドフィルタリング

CData ドライバーは、サーバーサイドでサポートされていないフィルターやその他のクエリ機能を処理するために、クライアントサイド処理を使用します。上記のフィルターに基づく結果はメモリ内で処理され、11月に更新されたアカウントのみが、CData ドライバーを使用しているツールやアプリケーションに返されます。

無料トライアル & 詳細情報

CData ドライバーは、120を超える SaaS、ビッグデータ、NoSQL ソースに対して標準ベースの SQL インターフェースを提供するだけでなく、フィルタリングからパースまで、包括的な日時機能をサポートしています。30日間の無料トライアルをダウンロードして、CData の違いをぜひ体験してください。ご不明な点がございましたら、サポートチームがいつでもお手伝いいたします。