CData API Server が出力する Datetime 型のフォーマットを変更する

f:id:sugimomoto:20211206151132p:plain こんにちは。CData Software Japan リードエンジニアの杉本です。

今回は CData API ServerのTips、Datetime型のフォーマットを変更方法をお伝えしたいと思います。

www.cdata.com

DateTime型のフォーマットとは?

CData API Serverでは、DateTime型のフォーマットが存在した場合、データソース側での持ち方に関わらず、一度CData API Serverのフォーマットに変換して出力するようになっています。

例えば、MySQL の以下のサンプルテーブルにあるTimeStampをAPI Server経由でAPI化した場合

f:id:sugimomoto:20211206151003p:plain

以下のようなレスポンスを返すAPIになります。

f:id:sugimomoto:20211206150743p:plain

ベーシックな使い方であれば、問題が無いことが多いですが、例えばSalesforce ConnectでCData API Serverを組み合わせて利用する場合など、このDateTime型のフォーマットが受け入れられないといったケースがあると思います。

そんな時に、CData API Server ではこのフォーマットを調整することができる機能が提供されているので、この方法をお伝えしたいと思います。

変更方法

設定は簡単で「settings.cfg」という、API Serverの接続設定などを管理しているファイルを変更するだけです。

「settings.cfg」はWindows版の場合は「C:\ProgramData\CData\apiserver」フォルダ

Linux版の場合は「/opt/apiserver」のフォルダに配置されています。

AMI版でV20など古いバージョンを利用している場合は「/home/jetty/cdata/apiserver」のフォルダに存在します。

f:id:sugimomoto:20211206150749p:plain

この「settings.cfg」の中に、以下のような形で「odatadatetimeformat 」を追加します。

[Application]
trustedip = *
registerstatus = INSTALLED 10/25/2021
recordsperpage = 10
odatadatetimeformat = yyyy-MM-dd'T'HH:mm:ss.sss'Z'

[Connections]

設定後、API Serverを再起動することで、以下のようにフォーマットが変更されます。

f:id:sugimomoto:20211206150754p:plain

以下のように無理やり日付オンリーのフォーマットに変更することも可能です。

odatadatetimeformat = yyyy-MM-dd

f:id:sugimomoto:20211206150758p:plain

管理用DBを使用している場合

管理用DBを使用している場合は、管理用DBの設定が優先されます。

以下のように管理用DBに設定を書き込んで反映させてください。

f:id:sugimomoto:20220225140551p:plain

  • odatadatetimeformatが無い場合
insert into app_settings(section, name, value) values('Application','odatadatetimeformat','yyyy/MM/dd HH:mm:ss');
  • odatadatetimeformatがある場合
update app_settings set value = 'yyyy-MM-dd HH:mm:ss' where name = 'odatadatetimeformat';

フォーマット変更の注意事項

日付フォーマットですが、CData API Serverが受け入れられないフォーマットが指定された場合、エラーなどにはならず、デフォルトのフォーマットが利用されます。

勘違いしやすいので要注意ですね。

f:id:sugimomoto:20211206150802p:plain

その他、気になることがあれば、テクニカルサポートまでお気軽にお問い合わせください。

https://www.cdata.com/jp/support/submit.aspx

トライアル・お問い合わせ

関連コンテンツ