如何用阿拉伯语获取月份文本?

时间:2014-05-19 06:01:24

标签: asp.net sql sql-server-2008 sql-server-2005

我有以下查询其工作正常的英文月文,但我们需要阿拉伯语的月文我们怎么办?我有Sql Server 2008R2.I检查使用FORMAT功能,但它不适用于2008r2版。

DECLARE @tempdate TABLE 
  ( 
     pricedate DATETIME NOT NULL, 
     priceid   INT NOT NULL 
  ) 

INSERT INTO @tempdate 
            (pricedate, 
             priceid) 
SELECT pricelist_date, 
       pricelist_id 
FROM   vw_lu_region_and_date_list 
WHERE  price_status = '3' 
       AND region_id = '1' 
       AND saletype = '2' 
ORDER  BY pricelist_date DESC; 

WITH numbered 
     AS (SELECT *, 
                Row_number() 
                  OVER ( 
                    partition BY Dateadd(month, Datediff(month, 0, pricedate), 0 
                  ) 
                    ORDER BY pricedate DESC) AS rn 
         FROM   @tempdate) 
SELECT RIGHT(CONVERT(NVARCHAR(20), pricedate, 106), 8) AS PRICELIST_DATE, 
       priceid                                         AS PRICELIST_ID 
FROM   numbered 
WHERE  rn = 1 
ORDER  BY priceid DESC 

我从上面的查询得到了结果,如

2013年4月

2013年3月

但我们需要像阿拉伯语的4月和3月那样????

1 个答案:

答案 0 :(得分:0)

我还建议将其存储为正常日期,您可以在客户端应用程序而不是SQL中进行转换。

在我曾为前一位开发人员工作过的组织中设计了一个SQL CLR函数,用于将日期转换为希伯来语日期并以希伯来语返回。 但你可以使用这个:

CREATE FUNCTION dbo.fnTranslateMonthNameToArabic
    (@date as datetime)
    RETURNS nvarchar(50)
AS
BEGIN
    DECLARE @result AS nvarchar(50);

    IF MONTH(@date) = 1
        SET @result = (SELECT CONVERT(nvarchar(2), DAY(@date)) + N' ' + N'يناير' + N' ' + CONVERT(nvarchar(4), YEAR(@date)));
    IF MONTH(@date) = 2
        SET @result = N'and so on ...';

    RETURN @result;
END
Go


-- Test
SELECT dbo.fnTranslateMonthNameToArabic({d N'2012-01-16'}) AS Arabic

最后请查看Arabic Language Support in SQL Server