指定された月の日数をSQLで求める

公開日: : 最終更新日:2013/12/10 SQL Server ,

指定された月の日数をSQLで求める

calender
SQLServerには該当月の日数を求める関数がないので
自力で求める必要があります。

該当月の月初と月末を求め計算する

指定月の月初求める

まずは指定月の月初を求めます。
月初は

で算出します。
内容は指定された月の年月を取り出して「1日」を
連結しています。
(後で使いやすいようにCONVERT()関数で日付型に変換しています。)

実行結果は(今日が「2013/12/02」だとすると)

になります。

指定月の次月の月初求める

次には指定月の次月の月初を求めます。
月初は

で算出します。
内容は指定された月に+1ヶ月しての年月を取り出して
「1日」を連結しています。
(これも後で使いやすいようにCONVERT()関数で日付型に変換しています。)

実行結果は(今日が「2013/12/02」だとすると)

になります。

次月の1日から今月の1日を引く

上記で求めた次月の1日から今月の1日を
DATEDIFF()関数で引くと
今月の日数が出てきます。
SQLは

で実行結果は

になります。

閏年の計算も可能

閏年もこの処理で正しく日数を取得できます。
まずは普通の年。

で実行結果は

次は閏年で

で実行結果は

になり正常に取得できます。

使用上の注意

上記のSQLは月に+1ヶ月するので年月が「9999/12」の時に
オーバーフローしてランタイムエラーになります。
「9999/12」がありえる処理の場合はチェックする処理が
必要になります。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 14 follow us in feedly

関連記事

SQLServer

SQLServerでストアドプロシージャ名を取得する

SQLServerでストアドプロシージャ名を取得する ストアドプロシージャ名を取得する エラ

記事を読む

no-img

Transact-SQLで日本語を(2バイト文字)を含むデータの扱い

Transact-SQLで日本語を(2バイト文字)を含むデータをそのままSUBSTRING()すると

記事を読む

no-img

SQL Server-ストアドプロシジャーのソースを表示する2

過去の投稿「SQL Server-ストアドプロシジャーのソースを表示する1」で示した方法では 1つ

記事を読む

no-img

sp_columns – SQL Serverでカラムの型を取得する

SQL Serverで定義されているテーブルのカラムの型を取得する SQL Serverで定義され

記事を読む

no-img

SQL Server2008で導入された[date/time/datetime2/datetimeoffset]型

SQL Server2008では新しい日付/時刻データ型 date/time/datetime2/

記事を読む

no-img

SQLServerでホスト名を取得する

SQLServerが動作しているホスト(サーバ)名取得 SQLServerでSQLServerが動

記事を読む

no-img

GROUP BYとHAVINGで最新日付データを取得する

GROUP BYとHAVINGで最新日付データを取得する 社員マスタなどで最新のレコードのみを取得

記事を読む

no-img

SQLServerで自動で連番を設定する

カラムに自動で連番を設定する 自動で連番を設定し、レコードを管理する場合に 重宝するカラムの属性

記事を読む

no-img

SQLで棒グラフの簡易版を出力する

SQLで棒グラフの簡易版出力 SQLで棒グラフの簡易版を出力してみます。 1.テーブルの作成

記事を読む

a0001_013635

呼び出したストアドプロシジャーの戻り値を使用する

呼び出したストアドプロシジャーの戻り値を使用する 処理の構成上、ストアドプロシジャーから他のストア

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

no-img
SQLServerではTRIM関数がありません

SQLServerでは空白を取り除くTRIM関数がない SQLSer

a0001_013635
テーブルから列を削除する「ALTER TABLE テーブル名 DROP COLUMN 削除する列名」

既存のテーブルから指定した列を削除する 既存のテーブルで不要になった

no-img
CREATE TABLE,ALTER TABLEでテーブルのプライマリーキー(PK)を作成する

SQL ServerでSQLを使用してプライマリーキー(PK)を作成し

SQLServer
SQLServerでストアドプロシージャ名を取得する

SQLServerでストアドプロシージャ名を取得する ストアドプ

no-img
MERGEでINSERTとUPDATEを1行で実行する

MERGE文を使うと行の存在有無を気にせずに1行のSQLでOK

→もっと見る



PAGE TOP ↑