SQL ServerのDATEDIFFの使い方【日付の差を求める】
SQL Serverには「Date」のような日付型が存在します。また、日付の計算において様々な便利に使える関数も用意されています。
今回は日付関数の一部を紹介していきますので、ぜひ参考にしてみてください。
- システム
エンジニア - SQL Serverで日付同士の差はどのように求められるのでしょうか?テーブルとしては以下が用意されており、StartDateとEndDateの差を求めたいのですが……。
【Sampleテーブル】
行番号 | StartDate(日付型) | EndDate(日付型) |
1 | 2020-01-01 | 2020-01-31 |
2 | 2020-02-01 | 2020-02-29 |
- プロジェクト
リーダー - なるほど、日付型の列同士の差分を求めたいのですね。それでは、「DATEDIFF」について解説していきましょう。
DATEDIFFの活用例
SQL Serverにて、指定された2つの日付の差を求めたい場合はDATEDIFF関数を用いることができます。差分の単位も指定することが可能なので、月日や秒単位など、必要に応じた単位で差分を求めることができます。
1
|
DATEDIFF ( datepart , startdate , enddate )
|
※「datepart」が差分の単位を表しており、日単位の場合は「day」、月単位の場合は「month」などのさまざまな単位で指定可能です。
1
2
3
|
SELECT
StartDate, EndDate, DATEDIFF(day, StartDate, EndDate) as Diff
FROM Sample
|
出力結果
行番号 | 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」関数を用いることができます。
1
|
DATEADD (datepart , number , date )
|
※「datepart」は前述と同じく、差分の単位を指定します。
1
2
3
|
SELECT
StartDate, DATEADD(month, 1, StartDate) as AddDate
FROM Sample
|
出力結果
行番号 | StartDate | AddDate |
1 | 2020-01-01 | 2020-02-01 |
2 | 2020-02-01 | 2020-03-01 |
→「StartDate」に1カ月加算した日付が「AddDate」に出力されます。
- システム
エンジニア - 解説ありがとうございます。DATEDIFF関数を使用して日付同士の差を求めることができそうです。
- プロジェクト
リーダー - そうですね。他にもさまざまな日付関数が用意されているので、この機会に勉強してみてくださいね。
日付型を扱う際に使える関数
今回はSQL Serverについて、日付関数の一部を紹介しました。
データ上は日付を文字列型として保存するケースもあるかと思いますが、その際はまず日付型に変換することも忘れないようにしましょう。DATEDIFF関数をぜひこれから使ってみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
SQLServer新着案件New Job
-
蔦屋書新店オープンに関するアプリ開発/Oracle/東京都渋谷区/【WEB面談可】/在宅勤務
月給56万~59万円東京都渋谷区(神泉駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
放射線部門システムパッケージの運用保守/Oracle/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
放射線部門システムパッケージの開発のテスター/Oracle/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅)