月末の日をINTで返す。ただそれだけのワンライナー…
大変申し訳ありません!
select CAST(SUBSTRING(CONVERT(VARCHAR,DATEADD(DAY,-1,DATENAME(YEAR,DATEADD(MONTH,+1,GETDATE()))+'-'+DATENAME(MONTH,DATEADD(MONTH,+1,GETDATE()))+'-'+'01'),112),7,2) AS INT)
そんなものは業務アプリ側でさらっと計算すればいいんでないの。DBを計算機代わりに使おうっていう発想自体が、既に負けのような。
これでどうですか? 手元にSQL Serverがないので動作確認していませんが。
171文字から66文字になったので約40%のダウンサイズですね。
ちなみに参考にしたサイトはここです。
"how to get the end day of month sql server"でググったら最初に出てきたページです。