दिलचस्प पोस्ट
एसक्यूलाइट एक साथ पढ़ने और लेखन सॉकेट विकल्प SO_REUSEADDR और SO_REUSEPORT, वे कैसे भिन्न होते हैं? क्या उनका मतलब सभी प्रमुख ऑपरेटिंग सिस्टमों में ही है? कैसे JSON डेटा Deserialize करने के लिए? एक छवि कॉलम में आप तस्वीर कैसे संग्रहीत करते हैं? आंशिक डाउनलोड (HTTP) का उपयोग कर फ़ाइल डाउनलोड करें MySQL द्वारा पहले समूह द्वारा आदेश Django: तिथि के अनुसार समूह (दिन, महीने, वर्ष) धागा "मुख्य" जावा में। अपवाद। किसी भी प्रकार की व्याख्या: कोई लाइन नहीं मिली – स्कैनर इनपुट का उपयोग करना नेस्टेड एरेज़ पर स्विफ्ट इक्विटी ऑपरेटर क्रॉस-ब्राउज़र बुकमार्क / पसंदीदा में जोड़ें JavaScript IPhone नेविगेशन बार पर पृष्ठभूमि छवि कैसे जोड़ें? एक फ्लोट को स्ट्रिंग में कनवर्ट करें जीआईटी कैसे सांकेतिक लिंक को संभालता है? Windows में वाइल्डकार्ड होस्ट फ़ाइल JavaFX में सीएसएस के साथ एनीमेशन कैसे बनाऊं?

टी-एसक्यूएल के साथ बार बार गणना

दो दिनांक / समय दी गई:

@start_date = '2009-04-15 10:24:00.000' @end_date = '2009-04-16 19:43:01.000' 

क्या निम्न प्रारूप में दो तिथियों के बीच बची हुई समय की गणना करना संभव है

1 डी 9 एच 1 9 मीटर

Solutions Collecting From Web of "टी-एसक्यूएल के साथ बार बार गणना"

आपको जो भी संकल्प आप चाहते हैं (आपके उदाहरण में, मिनट) दो तिथियों में अंतर प्राप्त कर सकते हैं :

 DATEDIFF(minute, @start_date, @end_date) 

वहां से, मिनटों में घंटों और घंटों में दिनों को विभाजित करने और शेष को सुधारने का एक सरल मामला है।

मुझे पता है कि यह धागा पुराना है और मूल प्रतिभागियों की अब देख नहीं रही है, लेकिन मैंने इसे ठोकर खाई, और पहले से ही कुछ कोड लिखे हैं जो हाल ही में जेडीआईएज़ के अनुरोध के बहुत करीब है। परिणाम डी में एक स्ट्रिंग के रूप में प्रदान किया जाता है: एच: एम: एस प्रारूप।

चरण एक सेकंड में समय अवधि प्राप्त करना होगा:

 DECLARE @ElapsedS INT SET @ElapsedS = DATEDIFF(second, @start_date, @end_date) 

अब निम्नलिखित स्केलर फ़ंक्शन बनाएँ:

 CREATE FUNCTION [dbo].[udfTimeSpanFromSeconds] ( @Seconds int ) RETURNS varchar(15) AS BEGIN DECLARE --Variable to hold our result @DHMS varchar(15) --Integers for doing the math , @Days int --Integer days , @Hours int --Integer hours , @Minutes int --Integer minutes --Strings for providing the display , @sDays varchar(5) --String days , @sHours varchar(2) --String hours , @sMinutes varchar(2) --String minutes , @sSeconds varchar(2) --String seconds --Get the values using modulos where appropriate SET @Hours = @Seconds/3600 SET @Minutes = (@Seconds % 3600) /60 SET @Seconds = (@Seconds % 3600) % 60 --If we have 24 or more hours, split the @Hours value into days and hours IF @Hours > 23 BEGIN SET @Days = @Hours/24 SET @Hours = (@Hours % 24) END ELSE BEGIN SET @Days = 0 END --Now render the whole thing as string values for display SET @sDays = convert(varchar, @Days) SET @sHours = RIGHT('0' + convert(varchar, @Hours), 2) SET @sMinutes = RIGHT('0' + convert(varchar, @Minutes), 2) SET @sSeconds = RIGHT('0' + convert(varchar, @Seconds), 2) --Concatenate, concatenate, concatenate SET @DHMS = @sDays + ':' + @sHours + ':' + @sMinutes + ':' + @sSeconds RETURN @DHMS END 

अब अपने बार-बार नव निर्मित फ़ंक्शन में फ़ीड करें:

 SELECT TimeSpan = dbo.udfTimeSpanFromSeconds(@ElapsedS) 

'1: 09: 1 9: 01' का उत्पादन करना चाहिए

 CONVERT(varchar,(@end_date-@start_date),108) 

यह आपको एच एच: एमएम: एसएस के रूप में देगा

चियर्स

DATEDIFF unintuitive मान वापस कर सकते हैं उदाहरण के लिए, नीचे दी गई दो तिथियां एक सेकेंड तक अभी भी अलग हैं, नीचे दिए गए मानकों के साथ DATEDIFF और व्याख्या की है क्योंकि दूसरों ने इसे रिटर्न 1 वर्ष से ऊपर बताया है:

SELECT DATEDIFF (वर्ष, '2005-12-31 23:59:59', '2006-01-01 00:00:00')

यह कैसे काम करता है यह समझने के लिए DATEDIFF के लिए MSDN दस्तावेज़ देखें।

दिनांकित दिनांक (दिनांक स्वरूप, दिनांक 1, तारीख 2);

रेक्स का जवाब अधिक पूर्ण है।

यहां बताया गया है कि आप एक क्वेरी में दिनांकित (50 डी 8 एच 35 एम) प्रारूप कैसे करते हैं:

 Declare @Date1 as Datetime, @Date2 as Datetime Set @Date1 = '2005-01-01 08:00:00' Set @Date2 = '2005-02-20 16:35:30' Select CAST(DATEDIFF(Minute,@Date1, @Date2)/60/24 as Varchar(50)) ++ 'd ' ++ CAST((DATEDIFF(Minute,@Date1, @Date2)/60)-((DATEDIFF(Minute,@Date1, @Date2)/60/24)*24) as Varchar(50)) ++ 'h ' ++ CAST((DATEDIFF(Minute,@Date1, @Date2)) - (DATEDIFF(HOUR,@Date1, @Date2)*60) as Varchar(50)) ++ 'm' as FormattedDateDiff 
 DECLARE @FirstDate DATETIME, @SecondDate DATETIME, @result VARCHAR(MAX) SELECT @FirstDate = '2017-03-01 09:54:00.637', @SecondDate = GETDATE() DECLARE @Day INT,@Month INT,@Hour INT, @Minute INT,@TotalSeconds INT,@Year INT SELECT @TotalSeconds = ABS(DATEDIFF(SECOND,@FirstDate,@SecondDate)) -- Standard values in seconds DECLARE @YearSeconds INT, @MonthSeconds INT, @DaySeconds INT, @HourSeconds INT, @MinuteSeconds INT SELECT @MinuteSeconds = 60 SELECT @HourSeconds = 60 * @MinuteSeconds SELECT @DaySeconds = 24 * @HourSeconds SELECT @MonthSeconds = 30 * @DaySeconds SELECT @YearSeconds = 12 * @MonthSeconds --SELECT @MinuteSeconds AS [Minutes], @HourSeconds AS [Hours], @DaySeconds AS [Day],@MonthSeconds AS [Month],@YearSeconds AS [Year] IF @TotalSeconds < @MinuteSeconds BEGIN SELECT @result = CAST(@TotalSeconds AS NVARCHAR(20)) + ' seconds ago' END ELSE IF @TotalSeconds < @HourSeconds BEGIN SELECT @result = CAST(ABS(DATEDIFF(MINUTE,@FirstDate,@SecondDate)) AS NVARCHAR(20)) + ' minutes ago' END ELSE IF @TotalSeconds < @DaySeconds BEGIN SELECT @result = CAST(ABS(DATEDIFF(HOUR,@FirstDate,@SecondDate)) AS NVARCHAR(20)) + ' hours ago' END ELSE IF @TotalSeconds < @MonthSeconds BEGIN SELECT @result = CAST(ABS(DATEDIFF(DAY,@FirstDate,@SecondDate)) AS NVARCHAR(20)) + ' days ago' END ELSE IF @TotalSeconds < @YearSeconds BEGIN SELECT @result = CAST(ABS(DATEDIFF(MONTH,@FirstDate,@SecondDate)) AS NVARCHAR(20)) + ' months ago' END ELSE IF @TotalSeconds > @YearSeconds BEGIN SELECT @result = CAST(ABS(DATEDIFF(YEAR,@FirstDate,@SecondDate)) AS NVARCHAR(20)) + ' year ago' END SELECT @result