我有以下查询其工作正常的英文月文,但我们需要阿拉伯语的月文我们怎么办?我有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月那样????
答案 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