Power Apps iconPower AppsことはじめPower Apps icon
【比較検証】3ステップで進化させる資産管理アプリ
Step 7 / 7

[探求] SharePointリストとDataverseの日付差分の発生を調べる

SharePointリストからコピーし、Dataverseに貼り付けると、なぜ日付の差が発生するのか。

SharePointリストとDataverseの日付比較

ステップ5で行った、日付データの手動コピー結果を下表に比較します。

No.SharePointリストの日付SharePointリストのシリアル値Dataverseの日付Dataverseのシリアル値
012024/04/15 0:0017131068002083/08/03 0:003584511600
022023/11/10 0:0016995420002078/07/10 0:003424700400
032024/01/20 0:0017056764002088/07/31 0:003741961200
042023/09/25 0:0016955676002093/07/08 0:003897826800
052025/02/01 0:0017383356002069/09/01 0:003145196400
062024/06/12 0:0017181180002080/08/05 0:003490018800
072022/08/30 0:0016617852002098/06/07 0:004052953200
082023/05/18 0:0016843356002086/07/04 0:003676642800
092021/12/05 0:0016386300002073/05/11 0:003261654000
102024/10/10 0:0017284860002078/08/09 0:003427292400

日付データだけではなく、シリアル値にして比較します。
例えば、No.1でコピーして貼り付けると日付が大きく変わり、シリアル値に変換すると17131068003584511600で表せます。
同じ日付を貼り付けた時に差分が出るということは、2つの数値の間にオフセットが入っていると考えられます。

日付のシリアル値の出し方

シリアル値は基本的に、下記の式で計算されます。

S = 指定日 - 基準日

つまり、17131068003584511600は、基準日時点から経過した値です。

日付の差(オフセット)

差分の原因=定義の違い

差分の原因は、SharePointとDataverseの定義(基準日、表し方など)の違いにあります。

  • SharePoint:
     基準日は「1900年1月0日(1899/12/31)」、シリアル値は日数、単位は日、Excel仕様
  • Dataverse:
     基準日は「1970年1月1日(1970/01/01 00:00:00 UTC)」、シリアル値は秒数、単位は秒、UNIX時間の公式定義

下記は比較表です。

項目SharePointDataverse
基準日1900年1月0日(1899/12/31)1970年1月1日(1970/01/01 00:00:00 UTC)
シリアル値日数秒数
単位
仕様Excel仕様UNIX時間の公式定義

計算工程の細分化

上記をもとに計算工程を細分化すると、下表になります。
 ※計算結果にズレがあります
  32400秒=9時間 ※UTCとの時差
  86400秒=1日 ※うるう年

ABC(A-B)DE(D-B)F(C-E)GH(F*G) - 32400 + 86400I(D*H)
SharePoint日付SharePoint基準日SharePointシリアル値Dataverse基準日DataverseとSharePoint差分Dataverse換算値1日のシリアル値Dataverseシリアル値Dataverse日付
2024/4/15 0:001900/1/1453961970/1/125569198278640017131068002083/6/7
2023/11/10 0:001900/1/1452391970/1/125569196708640016995420002081/12/23
2024/1/20 0:001900/1/1453101970/1/125569197418640017056764002082/8/20
2023/9/25 0:001900/1/1451931970/1/125569196248640016955676002081/7/21
2025/2/1 0:001900/1/1456881970/1/125569201198640017383356002086/2/18
2024/6/12 0:001900/1/1454541970/1/125569198858640017181180002083/12/20
2022/8/30 0:001900/1/1448021970/1/125569192338640016617852002077/12/8
2023/5/18 0:001900/1/1450631970/1/125569194948640016843356002080/5/8
2021/12/5 0:001900/1/1445341970/1/125569189658640016386300002075/6/16
2024/10/10 0:001900/1/1455741970/1/125569200058640017284860002085/1/28

Dataverseのbehavior(振る舞い)

上表の微妙な計算結果のズレに関し、Dataverseでは値の保存時、ユーザーローカル時間に変換される仕様があります。

また、シリアル値の計算過程においては、日→秒への変換、時差、うるう年などの要因もあり、正確な式を用いないとズレます。
そのため、DataverseとSharePointの間でデータを移行する際、変換処理は正しく行うことが必要です。

もっとも、ステップ4に記載した通り、テキスト貼り付けの場合は、そもそもこの問題は発生しません。

広告