DATEDIFF関数は、2つの日付(または日時)の差を「指定単位」で返す関数です。
「このプロジェクトは何日かかった?」「先月から何週間経った?」といった、期間の長さを数値で求めたいときに非常に便利です。
目次
DATEDIFF関数とは?
DATEDIFFは以下の3つの情報から、指定された単位で差を数値として返します:
- 日時単位(例:”day”、”hour”)
- 開始日(start date)
- 終了日(end date)
基本構文
DATEDIFF("単位", 開始日, 終了日)
例:今日と明日の差
DATEDIFF("day", TODAY(), TODAY()+1) // → 結果:1
DATEDIFF("hour", TODAY(), TODAY()+1) // → 結果:24
DATEDIFF("second", TODAY(), TODAY()+1) // → 結果:86400
日付の差を指定単位で取得できるのが特徴です。
使用できる日時単位一覧
単位 | 説明 | 補足 |
---|---|---|
year | 年単位の差(年の数) | 2023-01-01 → 2024-01-01 は 1年 |
quarter | 四半期単位の差 | 4月開始:Q1=4〜6月, Q2=7〜9月など |
month | 月単位の差 | 月の切り替え回数を数える |
week | 週単位の差 | 週の開始日は設定可能(デフォルト日曜) |
day | 日単位の差 | 基本的な差分 |
dayofyear | 実際には day と同様に処理される | 誤用に注意 |
weekday | 曜日単位の差 | 実務で使うケースは少ない |
hour | 時間単位の差 | |
minute | 分単位の差 | |
second | 秒単位の差 |
実務でよくある使用例
案件の所要日数を計算する
DATEDIFF("day", [開始日], [終了日])
→ 契約日〜納品日までの日数を表示可能。
サービス利用期間(年単位)を表示
DATEDIFF("year", [登録日], TODAY())
→ ユーザーの利用年数をプロフィールなどに表示。
前回更新からの経過時間を表示(ダッシュボード用)
DATEDIFF("hour", [最終更新日時], NOW())
→ データ更新遅れをアラートとして表示。
よくある誤解・注意点
「差」は切り上げでも四捨五入でもなく、**切り捨て(整数)**です。
たとえば 6月1日〜6月30日は、DATEDIFF("month")
では 0(同じ月)となります。
dayofyear
は day
と同じ扱いになります
年初からの日数を返すわけではありません。混同に注意。
時刻が絡む場合は NOW() を、日付だけなら TODAY() を使い分けましょう。
DATEDIFF vs DATETRUNC|違いを理解する
関数名 | 目的 | 出力 |
---|---|---|
DATEDIFF | 2つの日時の”差分”を返す | 数値(整数) |
DATETRUNC | 指定単位で切り捨てる | 日付/日時型 |
→ 差を知りたいときは DATEDIFF、粒度を揃えたいときは DATETRUNC。
よくある質問(FAQ)
Q. 月末間のDATEDIFF(“month”)は何になりますか?
→ 2023-06-30 → 2023-07-01 は 1、2023-06-01 → 2023-06-30 は 0 になります。
Q. 経過秒数がマイナスになることは?
→ 開始日と終了日の順序に注意。DATEDIFF("second", A, B)
は B が過去ならマイナスになります。
まとめ
DATEDIFF関数は、「どれくらい差があるか?」を分析するための基本関数です。日数だけでなく、年数や秒単位まで柔軟に使えるのが強み。
期間の長さを明示することで、ユーザー行動・プロセス管理・品質監視など多くのビジネス場面で活用できます。
Comment