こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL Server で 翌月10日を取得する

SQL Server で 翌月10日を取得する方法を教えてください。

isnull(convert(char(10),dateadd(month,1,(dateadd(day,9,DATE))),111),'') as DATE

↑これだと、DATE(月末)の翌月の9日後で、翌月10日も可能なのですが、

当然ながら、DATEが月末とは限らないので。。。

常に10日を固定で表示するにはどうしたら、よいのでしょうか?

よろしくお願いいたします。

投稿日時 - 2014-03-17 18:50:55

QNo.8517781

すぐに回答ほしいです

質問者が選んだベストアンサー

こんにちは。
イノ(inno)です。

翌月10日を取得する時は下記のようにします。

DECLARE @Today DATETIME
SET @Today = GETDATE()

SELECT CONVERT(CHAR(7),DATEADD(MM,1,@Today), 111) + '/10'

これが一番簡単です。

@TodayにDATEADD(MM,1,@Today)をして翌月に移動します。
CONVERTを利用して'yyyy/MM/dd'形式に変換して前から7文字を切り取ります。
その後に'/10'をつけて'yyyy/MM/dd'に変更します。

上記の方法はSQL SERVERの全バージョンから使えます。
SQL SERVER 2012ならば「EOMONTH」を使って下記のように記述して取得することができます。

SELECT DATEADD(day, 10, EOMONTH(GETDATE()))

「EOMONTH」はSQL SERVER 2012以上から使えます。

投稿日時 - 2014-03-18 12:53:42

お礼

お礼が遅くなり、申し訳ございません。
教えていただいた方法で、実現できました。
ありがとうございました。

投稿日時 - 2014-04-07 20:35:11

ANo.2

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

DATEADD(day, 10, EOMONTH(date))

 で、どうですか?
 ちなみに、EOMONTH(date [, offset])は、dateを含む月の最終日を返します。offsetの指定により、指定月後の最終日の計算も可能です。
 後は、null処理等、摘便付け加えてください。

投稿日時 - 2014-03-17 22:38:59

お礼

お礼が遅くなり申し訳ございません。
いろいな方法があるんですね。
勉強になりました。
ありがとうございました。

投稿日時 - 2014-04-07 20:37:33

あなたにオススメの質問