見出し画像

ゼロワンで日付の差を求める方法【応用編】

こんにちは!ゼロワンエヴァンジェリストの田中です!
今回は実際にコミュニティでも質問を頂いていた、日付の差を求める方法について解説していきます!

一見難しそうに見えますが、理解すると意外と簡単なので、ぜひやってみてください!では始めていきましょう!🔥

今回登場する関数は、diff関数floor関数割り算(/)とconcat関数(←concatは本筋とは関係ないですが)です。

準備として、開始時間(date型)と終了時刻(date型)を持つテーブルとレコードを作成しておいてください。

では順を追って解説していきます。

1.日付の差をdiff関数で求める

まず最初にdiff関数を用いて、差を求めます。

diff(終了時刻,開始時刻)

の順番で設定してください。
イメージとしては(1つ目)ー(2つ目)になります。

こちらの計算結果がmm秒にて算出されます。
例えば120時間だった場合、432,000,000mm秒で算出されます。

しかし、誰がmm秒単位で見たいねん!て話ですよね。

2.割り算で求められた差を時間に換算する

先ほど求められたmm秒単位の数値を時間単位に直す為に、割り算を使用します。mm秒→時間なので、3,600,000で割っていきます。
※この時に差分を日数で算出したいという事であれば、86,400,000で割るとOKです!

diff(終了時刻,開始時刻)/3600000

こちらでmm秒単位から時間単位に直されました。

しかし、現状だと小数点以下がまだ表示されています。
例えば120時間なら、120.000,000のように小数点以下も表示されている状態です。これまた、誰が小数点以下誰が必要やねん!状態ですね。

3.floor関数で換算された数値の小数点を切り捨てる

まあ、小数点以下も必要な方もいるかもしれませんが、今回は切り捨ててしまいましょう。その為にfloor関数を使用します。
以下のように設定してみてください。

floor(diff(終了時刻,開始時刻)/3600000)

ここで少数点以下が切り捨てられます。
"120.000,000"が"120"と返されます。気持ちがいいですね。

4.〇〇時間と表示する為にconcat関数を使う

最後におそらく数値だけで表示しない場合が多いと思いますので、「〇〇時間」とする為に、concat関数を用います。以下のように設定してください。

concat(floor(diff(終了時刻,開始時刻)/3600000),"時間")

こちらでやっと「120時間」と表示されるようになります。

いかがだったでしょうか?
このように関数を組み合わせてみると、結構いろんな事が出来ますので、ぜひ色々試してみてください!

この記事にスキを押してくださると今後のモチベーションにもなりますので、押してくれるとありがたいです!😌

最後まで読んでくださったありがとうございました!✨


本気でゼロワンを習得したい方は、ぜひゼンリョクの無料相談を受けてみてください!🔥

また、ゼロワンコミュニティのモクモク会で質問対応しています。
コミュニティ参加はこちらから💪

この記事が気に入ったらサポートをしてみませんか?