Tal vez sea engorroso, pero no veo cómo hacerlo de una manera más fácil.
Primero, crea una función. Esta función hará uso de system view sys .sysidiomas para obtener el nombre correcto del mes en español. Los parámetros son una fecha y un idioma válidos (alias en la vista sys.syslanguage).
CREATE FUNCTION [dbo].[fn_GetMonthName] (
@Date DATETIME,
@Language NVARCHAR(100)
)
RETURNS NVARCHAR(400)
AS
BEGIN
DECLARE @i INT, @m INT,@mlist NVARCHAR(1000)
SET @m = MONTH(@Date)
SET @mlist = (SELECT months FROM sys.syslanguages WHERE ALIAS = @language)
SET @i = 1
WHILE(@i < @m)
BEGIN
SET @mlist = REPLACE(@mlist, SUBSTRING(@mlist,1,CHARINDEX(',',@mlist)) ,'')
SET @i = @i + 1
END
SET @mlist = (CASE CHARINDEX(',',@mlist) WHEN 0 THEN @mlist ELSE SUBSTRING(@mlist,0,CHARINDEX(',',@mlist) ) END )
RETURN @mlist
END
GO
Luego llame a la función en cualquier lugar que necesite:
SELECT CONVERT(VARCHAR(20), GETDATE(), 100) AS CurrentDate,
dbo.fn_GetMonthName (GETDATE(), 'Spanish') AS [Mes-Month]
Resultado:
CurrentDate Mes-Month
May 24 2013 12:02AM Mayo
Tomado de Obtener el mes específico del idioma Nombre de SQL