Salesforceのデータはグリニッジ標準時(GMT)で管理される!

言われてみればそうだね、という話ですが、気づかないと大変なことになるので書いておきます。(大変なことになった、という話は聞いた事がある・・・)

詳細な情報は、ヘルプから検索できる、下記ナレッジ記事に書いてあります。アカウントを取得して、ログインして確認してください。ここでは概要だけ。

AppExchange データローダで日付データをインポートすると1日前の日付が登録される
ナレッジ記事番号: 000047804


Saleforceのデータベースでは、日付型、日付時間型項目のデータは内部的に全てGMTグリニッジ標準時)に変換され格納される仕様になっている。


なので、日本国内で普通に利用しているデータベースのデータを何も考えずにインポートすると、9時間早い時間になることになる。同様に、落としてきたデータは9時間遅い。ズレが生じる。

この制御はデータ形式タイムゾーン設定により行われるため、タイムゾーンを正しく設定した形式でデータ連携を行えば、問題は生じないようだ。


以下は例外らしい。(ナレッジより引用)

なお日付時間型項目に関しては、GMT変換後の値が時・分単位を含め格納されており、画面から参照される場合には再度ユーザ毎のタイムゾーン設定を考慮して時差変換されますため、日付がマイナスされて見えるという現象が起きません。

以下は対応例の引用

<「2011/09/01」をSalesforceに登録する方法>
・1日足した日付をインポートする: "2011-09-02"
・9時間足した日時をインポートする: "2011-09-01T09:00:00"
GMT指定でインポートする: "2011-09-01T00:00:00.000Z" (※「Z」はGMTをあらわします)
・データローダのタイムゾーンを(GMTグリニッジ標準時に設定してインポートする (下記の手順を参照下さい)

<データローダのタイムゾーン変更手順>
1)データローダのツールバーからSettingsを開く
2)Time Zone に"GMT" を入力する。(日本標準時にするためには"GMT+9:00"あるいは"Asia/Tokyo"と入力する)
3)OKボタンをクリックして設定を保存する。

※詳細はナレッジを見た方が良いかと思います。