sql >> Base de Datos >  >> RDS >> Sqlserver

convertir fecha a español en sql

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