2012-09-24 19 views
9

यहाँ मैं एक time स्तंभ (डेटाप्रकार integer है), अब मैं एसक्यूएल सर्वर में समय प्रारूप HH:MM:SS:00 को पूर्णांक मान बदलने की आवश्यकता 2008एक पूर्णांक (समय) को एचएच में कैसे परिवर्तित करें: एमएम: एसएस :: 00 एसक्यूएल सर्वर 2008 में?

इसके अलावा ऊपर time प्रारूप में स्पष्टीकरण की जरूरत है, चाहे 00 का प्रतिनिधित्व करता है के साथ एक मेज है मिलीसेकेंड?

कृपया इस पर सहायता करें।

उदाहरण: 23421155 23: 42: 11: 55 का प्रतिनिधित्व करता है; 421151 का प्रतिनिधित्व 00: 42: 11: 51

आशा है कि यह अब स्पष्ट है।

+4

संख्यात्मक प्रारूप क्या है? –

+0

मुझे उनके द्वारा उपयोग किए जाने वाले समय प्रारूप को नहीं पता है, लेकिन यहां एक उदाहरण है 10455836. – Praveen

+8

आपको यह जानने की ज़रूरत है कि किसी भी व्यक्ति को यह बताए जाने से पहले कि उस नंबर को कैसे परिवर्तित किया जाए। –

उत्तर

14
declare @T int 

set @T = 10455836 
--set @T = 421151 

select (@T/1000000) % 100 as hour, 
     (@T/10000) % 100 as minute, 
     (@T/100) % 100 as second, 
     (@T % 100) * 10 as millisecond 

select dateadd(hour, (@T/1000000) % 100, 
     dateadd(minute, (@T/10000) % 100, 
     dateadd(second, (@T/100) % 100, 
     dateadd(millisecond, (@T % 100) * 10, cast('00:00:00' as time(2)))))) 

परिणाम:

hour  minute  second  millisecond 
----------- ----------- ----------- ----------- 
10   45   58   360 

(1 row(s) affected) 


---------------- 
10:45:58.36 

(1 row(s) affected) 
+0

'टाइम' डेटाटाइप के अनुसार अतिरिक्त जानकारी यहां शौकीन हो सकती है: http://technet.microsoft.com/en-us/library/bb677243.aspx – Sandr

+0

यह साढ़े सालों बाद है, लेकिन इसे उत्तर के रूप में स्वीकार किया जाना चाहिए । यह वही है जो मुझे चाहिए था –

1

आप नीचे दिए गए समय रूपांतरण एसक्यूएल भीतर इस तरह का उपयोग कर सकते हैं:

--Convert Time to Integer (Minutes) 
DECLARE @timeNow datetime = '14:47' 
SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108)) 

--Convert Minutes to Time 
DECLARE @intTime int = (SELECT DATEDIFF(mi,CONVERT(datetime,'00:00',108), CONVERT(datetime, RIGHT(CONVERT(varchar, @timeNow, 100),7),108))) 
SELECT DATEADD(minute, @intTime, '') 

परिणाम: - मिनट में समय और 1900-01- 01 14: 47: 00.000 < - समय के लिए मिनट

6

पूर्णांक को एक स्ट्रिंग में कनवर्ट करें और फिर आप अपने कोनों में समय स्ट्रिंग में डालने के लिए STUFF फ़ंक्शन का उपयोग कर सकते हैं। एक बार ऐसा करने के बाद आप स्ट्रिंग को एक समय डेटाटाइप में परिवर्तित कर सकते हैं।

SELECT CAST(STUFF(STUFF(STUFF(cast(23421155 as varchar),3,0,':'),6,0,':'),9,0,'.') AS TIME) 

यह पागल करने के लिए कुछ भी किए बिना इसे बदलने के लिए सबसे आसान तरीका होना चाहिए।

आपके उदाहरण में आपके पास एक int भी था जहां अग्रणी शून्य नहीं हैं। उस स्थिति में आप इस तरह कुछ सरल कर सकते हैं:

SELECT CAST(STUFF(STUFF(STUFF(RIGHT('00000000' + CAST(421151 AS VARCHAR),8),3,0,':'),6,0,':'),9,0,'.') AS TIME) 
संबंधित मुद्दे

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