在sql中将日期转换为西班牙语 [英] convert date to spanish in sql
问题描述
我正在运行一份包含多个英文字段的报告.我在报告末尾有 2 个日期字段,一个必须是英文,另一个必须是西班牙文.日期需要采用的格式是 2012 年 11 月 1 日.我需要西班牙文是 2012 年 11 月 1 日.我无法用西班牙文生成报告的最后一个字段.我在 sql server 2005 中运行.
I am running a report with multiple fields in english. I have 2 date fields at the end of the report, one has to be in English and the other in Spanish. The format the date needs to be in is ie November 1, 2012. I need the spanish to be Novembre 1, 2012. I cannot get the last field of the report to produce in spanish. I am running in sql server 2005.
推荐答案
也许很麻烦,但我不知道如何以更简单的方式做到这一点.
Maybe is cumbersome, but I don't see how to do it on an easier way.
首先,创建一个函数.此功能将利用 系统视图 sys.syslanguages 以获取正确的西班牙语月份名称.参数是有效的日期和语言(sys.syslanguage 视图中的别名).
First, create a function. This function will make use of system view sys.syslanguages to get the correct name of month in spanish. Parameters are a valid date and language (alias on sys.syslanguage view).
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
然后在您需要的任何地方调用该函数:
Then call the function anywhere you need to:
SELECT CONVERT(VARCHAR(20), GETDATE(), 100) AS CurrentDate,
dbo.fn_GetMonthName (GETDATE(), 'Spanish') AS [Mes-Month]
结果:
CurrentDate Mes-Month
May 24 2013 12:02AM Mayo
这篇关于在sql中将日期转换为西班牙语的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!