2010-09-06 13 views
9

कृपया मुझे इस के साथ मदद करें, मैं बिगिंट से डेटाटाइम में एक मूल्य परिवर्तित करना चाहता हूं। उदाहरण im पढ़ने इतिहासteamcity सर्वर की मेज, क्षेत्र build_start_time_server मैं एक रिकॉर्ड पर इस मूल्य पर लिए 1283174502729.बिगिंट से डेटाटाइम मूल्य में कनवर्ट करें

कैसे मैं datetime मूल्य में बदल सकते हैं ???

धन्यवाद

+0

मैंने टैग को बदलकर उम्मीदवारों को और अधिक विशिष्ट बनाने के लिए बदल दिया। ध्यान दें कि यदि आप टैग फ़ील्ड में "एसक्यूएल सर्वर" का उपयोग करते हैं तो यह * एसक्यूएल * टैग के साथ-साथ * सर्वर * टैग के नीचे जाएगा लेकिन * एसक्यूएल-सर्वर * टैग के तहत नहीं होगा जो शायद आप चाहते हैं। – krock

+1

128317450272 9 के लिए आप किस डेटाटाइम वैल्यू चाहते हैं? – gbn

उत्तर

22

क्या यह आपके लिए काम करता है? यह रिटर्न 30-8-2010 13:21:42 SQL सर्वर 2005 पर इस समय:

select dateadd(s, convert(bigint, 1283174502729)/1000, convert(datetime, '1-1-1970 00:00:00')) 

मैं 1000 से विभाजित कर दिया है क्योंकि DATEADD समारोह एक संख्या के साथ काम नहीं करेगा बड़ा है। तो आप थोड़ा परिशुद्धता खो देते हैं, लेकिन इसका उपयोग करना बहुत आसान है।

+1

क्रॉक, यह सही है। आपकी मदद के लिए Thanx। – Chris

+0

@Chris अगर यह सही है तो आपको जवाब स्वीकार करना चाहिए। –

2

थोड़ा अलग दृष्टिकोण:

आपका परिदृश्य:

SELECT dateadd(ms, 1283174502729/86400000, (1283174502729/86400000) + 25567) 
FROM yourtable 

जेनेरिक कोड:

SELECT dateadd(ms, yourfield/86400000, (yourfield/86400000) + 25567) 
FROM yourtable 

आउटपुट:

August, 30 2010 00:00:14 

एसक्यूएल फिडल: http://sqlfiddle.com/#!3/c9eb5a/2/0

2
CAST(SWITCHOFFSET(CAST(dateadd(s, convert(bigint, [t_stamp])/1000, convert(datetime, '1-1-1970 00:00:00')) AS DATETIMEOFFSET), DATENAME (TZoffset, SYSDATETIMEOFFSET())) AS DATETIME) 
+0

मुझे अभी भी वोट को समझ में नहीं आता है। क्या त्रुटियां हैं? यह 2008R2 के लिए काम करता है। क्या यह अक्षम है? अगर मैं नहीं जानता कि मुझे क्या सुधारना है तो मैं कैसे सुधार कर सकता हूं। – stinkyjak

+0

मुझे लगता है कि डाउनवोट कोड को केवल उत्तर देने के लिए था, यह बताए बिना कि यह क्या कर रहा है या यह क्यों काम करता है। – iamdave

0

DATEADD (दूसरा, YourValue, कास्ट ('1970-01-01 00:00:00' के रूप में datetime))

+0

डाउनवॉटेड। "अंकगणित अतिप्रवाह त्रुटि अभिव्यक्ति को डेटा प्रकार int में परिवर्तित कर रही है।" प्रश्न में दिए गए आंकड़ों के साथ। – UnhandledExcepSean

+0

फिर भी कुछ बदलावों के साथ यह काम कर सकता है, शायद पोस्टर इसे थोड़ा सा काम कर सकता है?(उसे थोड़ा प्रोत्साहित करने के लिए ऊपर :) :) – Gar

0

निम्नलिखित खाते में नए एसक्यूएल शब्दावली लेता है और मिलीसेकेंड वापस आ जाएगी (कर सकते हैं यह भी एक गणना क्षेत्र में उपयोग के लिए संशोधित किया जा।) [एसक्यूएल सर्वर 2012 या बाद में]

declare @StartDate datetime2(3) = '1970-01-01 00:00:00.000' 
, @milliseconds bigint = 1283174502729 
, @MillisecondsPerDay int = 60 * 60 * 24 * 1000 -- = 86400000 

SELECT DATEADD(MILLISECOND, TRY_CAST(@milliseconds % @millisecondsPerDay AS 
INT), DATEADD(DAY, TRY_CAST(@milliseconds/@millisecondsPerDay AS INT), 
@StartDate)); 
संबंधित मुद्दे