2013-02-24 121 views
17

एसक्यूएल सर्वर में मैं एक दिया datetimeoffset(7) की भरपाई खोजने की जरूरत है।एसक्यूएल सर्वर में datetimeoffset की भरपाई हो रही है

मैं प्रलेखन शोध किया है और वहाँ एक रास्ता ऑफसेट लेकिन नहीं पता करने के लिए एक विशेष मूल्य (खेद अगर मैं इसे याद किया) की भरपाई को बदलने के लिए सभी तरह से कर रहे हैं।

खैर मुझे लगता है कि मैं बहुत जटिल लगता है, हालांकि काम करने के लिए लगता है कोड का निम्न भाग के साथ आया था।

DECLARE @datetimeOffset datetimeoffset(7) 

SET @datetimeOffset = CAST('2007-05-08 22:35:29.1234567-05:00' AS datetimeoffset(7)) 

DECLARE @result datetimeoffset(7) 
DECLARE @offsetMin int 

SET @offsetMin = DATEDIFF(mi, cast(SWITCHOFFSET(@datetimeOffset, '+00:00') as datetime), cast(@datetimeOffset as datetime)) 

SELECT @offsetMin 

मैं अभी भी 00 के लिए रूपांतरण करना है: 00 प्रारूप लेकिन अगर वहाँ ऐसा करने का एक बेहतर तरीका है की जाँच करना चाहता था।

धन्यवाद!

उत्तर

30

DatePart समारोह एक TZ विकल्प जो समय क्षेत्र मिनट में सन्तुलन बना रहता है।

datepart(tz,@datetimeoffset) 
+6

आप ऑफसेट को वर्चर के रूप में प्राप्त करने के लिए DATENAME (tz, @datetimeoffset) भी प्राप्त कर सकते हैं। –

+4

'TZOFFSET'' tz' के स्थान पर काम करता है और, इसके लायक होने के लिए, एसएसएमएस सिंटैक्स हाइलाइटर द्वारा मान्यता प्राप्त है। –

+0

यह केवल एसएसएमएस 2012+ में काम करता है – codeMonkey