AlteryxのDateTime型からExcelのシリアル値を計算する方法をご紹介します
Alteryx ACEのAkimasaKajitaniです。
Excelのシリアル値は「1900年1月1日」が基準となっており、そこから1日経つと1加算されていきます。以前のブログ記事で、Excelのシリアル値からAlteryxの日時型に変換する方法は紹介しましたが、今回は逆の内容となる、「AlteryxのDateTime型からExcelのシリアル値を計算する方法」をご紹介します。
DateTime型からExcelのシリアル値を計算する
Excelのシリアル値は「1900年1月1日」が基準となっており、そこから1日経つと1加算されていく、という定義を考えると、1900年1月1日からどれくらい経過したかを計算できれば取得が可能です。この場合ではAlteryxでは、DateTimeDiff関数が利用可能です。
DateTimeDiff(dt1,dt2,u)
dt1:期間の最後の日付
dt2:期間の最初の日付
u:単位。例えば日単位なら"Day"、秒単位なら"Second"
dt1-dt2と計算されるため、dt2は常に"1900-01-01 00:00:00"となります。dt1の方は、変換したい日付を入れます。
Excelのシリアル値は、整数は日、小数部分は時間の部分を示しています。まず、単位をDayでやってみましょう。
DateTimeDiff("2024-02-05 12:23:45","1900-01-01 00:00:00","day")
この答えは、45325となり小数部分が消えています。単位に指定した部分は切り捨てられてしまうようです。
となると、秒単位で差分を出し、計算で求めるしかありません。
DateTimeDiff("2024-02-05 12:23:45","1900-01-01 00:00:00","second")
この答えは、3916124625となります。今度は非常に大きい整数値になりました。
ところで、1日は何秒でしょうか?24時間×60分×60秒で86400秒となります。つまり、秒単位で求めたものを86400で割れば良いということになります。
DateTimeDiff("2024-02-05 12:23:45","1900-01-01 00:00:00","second")/86400
結果は、「45325.5164930556」ということで、正解です。
結論
AlteryxのDateTime型をExcelのシリアル値に置き換える場合は、以下の計算式で可能となります。
DateTimeDiff([比較フィールド],"1900-01-01 00:00:00","second")/86400
サンプルワークフローダウンロード