.net column

.NET開発者のためのブログメディア
カレンダー

SQL ServerのDATEDIFFの使い方【日付の差を求める】

2020年03月16日

SQL Serverには「Date」のような日付型が存在します。また、日付の計算において様々な便利に使える関数も用意されています。
今回は日付関数の一部を紹介していきますので、ぜひ参考にしてみてください。

SE
SQL Serverで日付同士の差はどのように求められるのでしょうか?テーブルとしては以下が用意されており、StartDateとEndDateの差を求めたいのですが……。

【Sampleテーブル】

行番号 StartDate(日付型) EndDate(日付型)
1 2020-01-01 2020-01-31
2 2020-02-01 2020-02-29
PL
なるほど、日付型の列同士の差分を求めたいのですね。それでは、「DATEDIFF」について解説していきましょう。

DATEDIFFの活用例

SQL Serverにて、指定された2つの日付の差を求めたい場合はDATEDIFF関数を用いることができます。差分の単位も指定することが可能なので、月日や秒単位など、必要に応じた単位で差分を求めることができます。

※「datepart」が差分の単位を表しており、日単位の場合は「day」、月単位の場合は「month」などのさまざまな単位で指定可能です。

出力結果

行番号 StartDate EndDate Diff
1 2020-01-01 2020-01-31 30
2 2020-02-01 2020-02-29 28

→「StarDate」と「EndDate」の差分(day:日単位)が「Diff」に出力されます。

DATEADDを用いた例

SQL Serverでは、他にもさまざまな日付関数が備わっています。例えば、指定した日付に任意の値を加算したい場合は「DATEADD」関数を用いることができます。

※「datepart」は前述と同じく、差分の単位を指定します。

出力結果

行番号 StartDate AddDate
1 2020-01-01 2020-02-01
2 2020-02-01 2020-03-01

→「StartDate」に1カ月加算した日付が「AddDate」に出力されます。

SE
解説ありがとうございます。DATEDIFF関数を使用して日付同士の差を求めることができそうです。
PL
そうですね。他にもさまざまな日付関数が用意されているので、この機会に勉強してみてくださいね。

日付型を扱う際に使える関数

今回はSQL Serverについて、日付関数の一部を紹介しました。
データ上は日付を文字列型として保存するケースもあるかと思いますが、その際はまず日付型に変換することも忘れないようにしましょう。DATEDIFF関数をぜひこれから使ってみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)