Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2008 में hh:mm:ss फॉर्मेट में 24 घंटे से अधिक रिटर्न दें

BTW आपके द्वारा उपयोग किए जा रहे डेटा प्रकार के साथ-साथ खरीद में बहुत सारी तकनीकी खामियां हैं। असली समस्या यहाँ है।

  1. अपनी खरीद में आप पहले सीटीई में ही तारीख की स्थिति डाल सकते हैं।
  2. यदि संभव हो तो आप तालिका में अतिरिक्त घंटे को सेकंड में संग्रहीत कर सकते हैं। इसका मतलब है कि अतिरिक्त घंटे int या bigint.like -1000 या 1000.varchar कभी भी आपकी समस्या का समाधान नहीं करेंगे। यह आपको बहुत तेजी से रूपांतरण से बचाएगा।
  3. ग्रुप बाय में इतने सारे कॉलम का उपयोग करना अपने आप में गलत तरीका है। विशेष रूप से ग्रुप बाय में वर्कर कॉलम का उपयोग करना। आपको ग्रुप में की कॉलम का उपयोग करना चाहिए, फिर परिणाम में अन्य कॉलम प्राप्त करने के लिए टेबल के साथ फिर से जुड़ना चाहिए।

आपके नमूना डेटा के साथ मुझे -31:50:46 के बजाय -29:-51:-30.0 मिल रहा है। इसे इस तरह से करें,

DECLARE @t TABLE (ExtraHrs VARCHAR(20))

INSERT INTO @t
VALUES ('00:59:38')
    ,('-03:59:37')
    ,('-08:59:39')
    ,('-08:52:36')
    ,('-08:59:16');

WITH cte
AS (
    SELECT ExtraHrs
        ,CASE 
            WHEN left(ExtraHrs, 1) = '-'
                THEN - 1
            ELSE 1
            END AS multiply
        ,right(ExtraHrs, 8) AS timestring
        ,
        --get hours in seconds:
        DATEPART(HOUR, right(ExtraHrs, 8)) * 3600 AS h_in_s
        ,
        --get minutes in seconds:
        DATEPART(MINUTE, right(ExtraHrs, 8)) * 60 AS m_in_s
        ,
        --get seconds:
        DATEPART(SECOND, right(ExtraHrs, 8)) AS s
    FROM @t
    )
    ,CTE3
AS (
    SELECT *
        ,c.h_in_s + c.m_in_s + c.s AddExtra
    FROM cte c
    )
    ,cte4
AS (
    SELECT sum(AddExtra * multiply) mn
    FROM cte3
    )
    ,cte5
AS (
    SELECT mn / 3600 hh
        ,(mn % 3600) / 60 mi
        ,(mn % 3600.0) % 60 ss
    FROM cte4
    )
SELECT CASE 
        WHEN hh < 0
            THEN '-'
        ELSE ''
        END
    ,cast(hh AS VARCHAR) + ':' + cast(mi AS VARCHAR) + ':' + cast(ss AS VARCHAR)
FROM cte5


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डिफ़ॉल्ट दिनांक समय टिकट?

  2. MS SQL सर्वर में पूर्ण किए गए कार्यों के बारे में स्वचालित डेटा संग्रह

  3. उपयोगकर्ताओं/दूसरे की भूमिकाओं के लिए एक डीबी तक पहुंच प्रदान करना

  4. डेटा खोए बिना SQL डेटाबेस में कॉलम डेटाटाइप कैसे बदलें

  5. क्या इस पुनरावर्ती समाधान को सीटीई या ओवर का उपयोग करके टी-एसक्यूएल क्वेरी में लिखा जा सकता है?