2009-05-29 9 views
7

मेरे पास समय डेटाटाइप्स की निम्न तालिकाएक मेज से TIME डेटाटाइप्स (MSSQL08) का योग प्राप्त

स्पष्टीकरण: मैं घंटे/मिनट/वीडियो के सेकंड का प्रतिनिधित्व कर रहा हूँ और यह पता लगाने की कितनी देर तक वीडियो हो जाएगा चाहते हैं ।

runtime 
---------------- 
01:27:19.0000000 
01:26:09.0000000 
01:00:56.0000000 
01:09:59.0000000 
01:25:43.0000000 
01:16:01.0000000 
01:27:12.0000000 
01:22:00.0000000 
01:17:47.0000000 
01:31:07.0000000 
01:36:23.0000000 
01:13:29.0000000 
01:20:12.0000000 
01:03:24.0000000 
00:58:42.0000000 

मैं इन सभी समयों का एसयूएम प्राप्त करना चाहता हूं।

+0

किस उद्देश्य के लिए परिवर्तित करना होगा? यह व्यर्थ है। – dkretz

+3

मुझे नहीं लगता कि यह अर्थहीन है ... शायद ये एल्बम पर गीतों की अवधि हैं, और वह पूरे एल्बम की कुल अवधि चाहता है? सिर्फ एक संभावना ... – JosephStyons

+0

यूसुफ सही है ... मैं "एनएचबीरनेट की ग्रीष्मकालीन" वीडियो श्रृंखला की अवधि प्राप्त करना चाहता हूं ताकि जब मैं दूसरों को इस श्रृंखला की अनुशंसा करता हूं तो मैं उन्हें बता सकता हूं कि वीडियो कितने समय तक ले जाएगा के माध्यम से जाना। –

उत्तर

6

मैं बहुत अभी तक का इस्तेमाल किया है नहीं 2008 और मैं एक उदाहरण के काम की जरूरत नहीं है, जहां मैं इस जांच करने के लिए कर रहा हूँ, लेकिन कुछ इस तरह काम कर सकते हैं:

SELECT 
    DATEADD(ms, SUM(DATEDIFF(ms, '00:00:00.000', my_time)), '00:00:00.000') 
FROM 
    dbo.My_Table 

le dorfier बताते हैं के रूप में, जोड़ने बार थोड़ा सा अर्थहीन है, क्योंकि उन्हें दिन के समय का प्रतिनिधित्व करना चाहिए। मैं इस धारणा के तहत जा रहा हूं कि आप उन्हें घंटे/मिनट/सेकंड इंगित करने के लिए उपयोग कर रहे हैं।

ओह, और मुझे नहीं पता कि ऊपर के साथ क्या होगा यदि यह 24 घंटे से अधिक हो।

+0

एक आकर्षण की तरह काम किया ... परिणाम '1 9 00-01-01 1 9: 36: 23.000' था इसलिए मुझे विश्वास है कि अगर जवाब 24 घंटों से अधिक था, यह अगले दिन ही जाएगा। –

0

सबसे अच्छा तरीका मैं सोच सकता हूं कि समय, मिनट, सेकंड और मिलीसेकंद घटकों में समय का विश्लेषण करना है, इसे सभी को मिलीसेकंड में जोड़ना (जोड़ना और गुणा करके), फिर उन्हें जोड़ना और इसे बदलने के लिए मॉड्यूल और घटाव का उपयोग करना एक समय में वापस।

उदाहरण

create function dbo.GetMilliseconds (@timespan varchar (16)) 
    returns int 
as 
begin 
declare @ms int 
declare @seconds int 
declare @min int 
declare @hour int 
set @ms = cast(substring(@timespan, 10, 7) as int) 
set @seconds = cast(substring(@timespan, 7, 2) as int) 
set @min = cast(substring(@timespan, 4,2) as int) 
set @hour = cast(substring(@timespan, 1, 2) as int) 
return @ms + (@seconds * 1000) + (@min * 60000) + (@hour * 3600000) 
end 
go 

create function dbo.ParseMilliseconds (@timespan int) 
    returns varchar (16) 
as 
begin 
declare @hour int 
declare @min int 
declare @seconds int 
declare @ms int 
declare @leftover int 
set @hour = @timespan/3600000 /* this will round down */ 
set @leftover = @timespan % 3600000 
set @min = @leftover/60000 
set @leftover = @leftover % 60000 
set @seconds = @leftover/1000 
set @ms = @leftover % 1000 
return 'You''ll have to the string conversion yourself' 
end 
go 

लिए

और फिर SELECT dbo.ParseMilliseconds(sum(dbo.GetMilliseconds(timespan))) as added_timespan

मैं इस सब का परीक्षण किया है नहीं, और वहाँ सरल तरीके हो सकते हैं, लेकिन मैं जानता हूँ कि यह काम करेगा।

0

समय सारिणी

से

चयन योग (DateDiff (मिनट, '00:00:00', TimeCol)) के कुछ बदलाव

कार्य करेगी, लेकिन

आप को घटाकर की सामान्य बनाने में होगा प्रत्येक डेटाटाइम से दिनांक भाग और आपको कुल मिनटों को एक समय में

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