2011-07-15 24 views
7

में डेटाटाइम में डेटाटाइम को कैसे परिवर्तित करें मैं अपने डेटाटाइम को एसक्यूएल सर्वर में फारसी डेटाटाइम में कनवर्ट करना चाहता हूं। मेरा डेटाटाइम एमएम/डीडी/वाई वाई वाई प्रारूप में है। वहाँ मैं इसएसक्यूएल सर्वर

select CONVERT(VARCHAR(40), getdate(), 131) //Output is 14/08/1432 5:02:01:197PM 

का उपयोग मैं कोई एसक्यूएल सर्वर 2008

उत्तर

2

उपयोग कर रहा हूँ बॉक्स से बाहर, एसक्यूएल सर्वर में किसी भी समारोह के रूप में जब मैं हिजरी दिनांक चाहते ऐसा करने के लिए है।

आप अपनी खुद की यूडीएफ लिखने के लिए होगा, लेकिन वहाँ CodePlex पर एक और another

9

मैं जानता हूँ कि बहुत देर हो चुकी है, लेकिन शायद मेरे जैसे अन्य लोगों को इस परेशानी हो रही करने के लिए उपयोगी है।

आप इस तरह इस रूपांतरण के लिए एक एसक्यूएल समारोह लिखना चाहिए: Converting Gregorian to Persian Date

और उसके बाद इस तरह इसका इस्तेमाल:

SELECT dbo.[UDF_Gregorian_To_Persian]('2013-08-24') 
6

मैं जानता हूँ कि यह इस सवाल का जवाब देने के लिए बहुत देर हो चुकी है, लेकिन मैं मैंने उस फ़ंक्शन को सबमिट किया है जिसे मैं बिना किसी बग के लंबे समय तक उपयोग कर रहा हूं, अन्य सभी विधियों जिन्हें मैंने कभी देखा है, में इंटरकैलेरी सालों के साथ समस्या है:

CREATE FUNCTION [CalculatePersianDate] (@intDate DATETIME) 
RETURNS NVARCHAR(max) 
BEGIN 

DECLARE @shYear AS INT ,@shMonth AS INT ,@shDay AS INT ,@intYY AS INT ,@intMM AS INT ,@intDD AS INT ,@Kabiseh1 AS INT ,@Kabiseh2 AS INT ,@d1 AS INT ,@m1 AS INT, @shMaah AS NVARCHAR(max),@shRooz AS NVARCHAR(max),@DayCnt AS INT 
DECLARE @DayDate AS NVARCHAR(max) 

SET @intYY = DATEPART(yyyy, @intDate) 

IF @intYY < 1000 SET @intYY = @intYY + 2000 

SET @intMM = MONTH(@intDate) 
SET @intDD = DAY(@intDate) 
SET @shYear = @intYY - 622 
SET @DayCnt = 5 

IF ((@intYY - 1992) % 4 = 0) SET @Kabiseh1 = 0 ELSE SET @Kabiseh1 = 1 

IF ((@shYear - 1371) % 4 = 0) SET @Kabiseh2 = 0 ELSE SET @Kabiseh2 = 1 

SET @m1 = 1 
SET @d1 = 1 
SET @shMonth = 10 
SET @shDay = 11 

IF ((@intYY - 1993) % 4 = 0) SET @shDay = 12 


WHILE (@m1 != @intMM) OR (@d1 != @intDD) 
BEGIN 

    SET @d1 = @d1 + 1 
    SET @DayCnt = @DayCnt + 1 

    IF 
    (@d1 = 32 AND (@m1 = 1 OR @m1 = 3 OR @m1 = 5 OR @m1 = 7 OR @m1 = 8 OR @m1 = 10 OR @m1 = 12)) 
    OR 
    (@d1 = 31 AND (@m1 = 4 OR @m1 = 6 OR @m1 = 9 OR @m1 = 11)) 
    OR 
    (@d1 = 30 AND @m1 = 2 AND @Kabiseh1 = 1) 
    OR 
    (@d1 = 29 AND @m1 = 2 AND @Kabiseh1 = 0) 
    BEGIN 
    SET @m1 = @m1 + 1 
    SET @d1 = 1 
    END 

    IF @m1 > 12 
    BEGIN 
    SET @intYY = @intYY + 1 
    SET @m1 = 1 
    END 

    IF @DayCnt > 7 SET @DayCnt = 1 

SET @shDay = @shDay + 1 

    IF 
    (@shDay = 32 AND @shMonth < 7) 
    OR 
    (@shDay = 31 AND @shMonth > 6 AND @shMonth < 12) 
    OR 
    (@shDay = 31 AND @shMonth = 12 AND @Kabiseh2 = 1) 
    OR 
    (@shDay = 30 AND @shMonth = 12 AND @Kabiseh2 = 0) 
    BEGIN 
    SET @shMonth = @shMonth + 1 
    SET @shDay = 1 
    END 

    IF @shMonth > 12 
    BEGIN 
    SET @shYear = @shYear + 1 
    SET @shMonth = 1 
    END 

END 

IF @shMonth=1 SET @shMaah=N'فروردین' 
IF @shMonth=2 SET @shMaah=N'اردیبهشت' 
IF @shMonth=3 SET @shMaah=N'خرداد' 
IF @shMonth=4 SET @shMaah=N'تیر' 
IF @shMonth=5 SET @shMaah=N'مرداد' 
IF @shMonth=6 SET @shMaah=N'شهریور' 
IF @shMonth=7 SET @shMaah=N'مهر' 
IF @shMonth=8 SET @shMaah=N'آبان' 
IF @shMonth=9 SET @shMaah=N'آذر' 
IF @shMonth=10 SET @shMaah=N'دی' 
IF @shMonth=11 SET @shMaah=N'بهمن' 
IF @shMonth=12 SET @shMaah=N'اسفند' 

IF @DayCnt=1 SET @shRooz=N'شنبه' 
IF @DayCnt=2 SET @shRooz=N'یکشنبه' 
IF @DayCnt=3 SET @shRooz=N'دوشنبه' 
IF @DayCnt=4 SET @shRooz=N'سه‌شنبه' 
IF @DayCnt=5 SET @shRooz=N'چهارشنبه' 
IF @DayCnt=6 SET @shRooz=N'پنجشنبه' 
IF @DayCnt=7 SET @shRooz=N'جمعه' 

--SET @DayDate = @shRooz + " " + LTRIM(STR(@shDay,2)) + " " + @shMaah + " " + STR(@shYear,4) 
--پنجشنبه 17 اردیبهشت 1394 

/* 
SET @DayDate = LTRIM(STR(@shDay,2)) + " " + @shMaah + " " + STR(@shYear,4) 
--17 اردیبهشت 1394 

SET @DayDate = STR(@shYear,4) + "/"+LTRIM(STR(@shMonth,2)) + "/" + LTRIM(STR(@shDay,2)) 
--1394/2/17 


--1394/02/17 
*/ 
SET @DayDate = REPLACE(RIGHT(STR(@shYear, 4), 4), ' ', '0') + '/'+ REPLACE(STR(@shMonth, 2), ' ', '0') + '/' + REPLACE((STR(@shDay,2)), ' ', '0') 
RETURN @DayDate 
END 

फ़ंक्शन के परिणाम को अनुकूलित करना वास्तव में आसान है। से अपनाया: this page

2

convert Jalali to Georgian and Georgian to Jalali

इस लिंक का प्रयास करें। कुछ फ़ंक्शन है जो आप SQL सर्वर में जोड़ सकते हैं और जब आपको आवश्यकता हो तो बस उन्हें कॉल करें।

संबंधित मुद्दे