SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()) + 1, '19000101'))
GO
Traduzido do Inglês:
Calculado o número de meses entre a data corrente e a data de referencia, neste caso estou usando '19000101', que é a iniciação do mês, assim nos precisamos adicionar 1 para achar o primeiro dia do próximo mês e subtrair um dia.
Fonte: http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/342a2cb3-bbf3-4fc0-b5fc-eab585d9af21
Corrigindo o script acima:
ResponderExcluirselect DATEADD(day,-1,DATEADD(month, -1, dateadd(month, datediff(month, '19000101', getdate()) + 1, '19000101')))