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

zyoni
2014-03-31 23:06 1770 1

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

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

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

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

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

コメント

2014年 04月 02日 (18:03)
こんにちは。
イノ(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以上から使えます。