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

SQL सर्वर में त्रुटि "डेटिफ़ फ़ंक्शन के परिणामस्वरूप अतिप्रवाह" को कैसे ठीक करें?

यह आलेख DATEDIFF() . का उपयोग करते समय कभी-कभी आपके सामने आने वाली समस्या का समाधान प्रदान करता है SQL सर्वर में कार्य करता है।

यदि आप निम्न त्रुटि का सामना करते हैं:

<ब्लॉकक्वॉट>

dateiff फ़ंक्शन के परिणामस्वरूप अतिप्रवाह हुआ। दो दिनांक/समय इंस्टेंस को अलग करने वाले डेटपार्ट्स की संख्या बहुत बड़ी है। कम सटीक डेटपार्ट के साथ dateiff का उपयोग करने का प्रयास करें।

ऐसा इसलिए है क्योंकि वापसी मूल्य बहुत बड़ा है। DATEDIFF() फ़ंक्शन अपना परिणाम int . के रूप में देता है डेटा प्रकार। आपको यह संदेश मिलने का कारण यह है कि int . के लिए वापसी मान बहुत बड़ा है डेटा प्रकार। सौभाग्य से इसे ठीक करने का एक आसान तरीका है।

इस समस्या को ठीक करने का सबसे तेज़ और आसान तरीका है DATEDIFF_BIG() पर स्विच करना समारोह। यह फ़ंक्शन बिल्कुल DATEDIFF() like की तरह काम करता है , सिवाय इसके कि इसका रिटर्न डेटा प्रकार एक हस्ताक्षरित बिगिंट . है . दूसरे शब्दों में, यह वास्तव में बड़ी संख्या को संभाल सकता है।

उदाहरण

आइए देखें कि क्या DATEDIFF() हमें बता सकते हैं कि एक हज़ार साल में कितने मिलीसेकंड होते हैं:

SELECT DATEDIFF( 
    millisecond, 
    SYSDATETIME(), 
    DATEADD(year, 1000, SYSDATETIME()) ) AS 'Milliseconds in 1000 years';

परिणाम:

The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart. 

शायद नहीं। ऐसा लगता है कि int . में फ़िट होने के लिए बहुत अधिक मिलीसेकंड हैं ।

बड़ी तोपों का समय। DATEDIFF_BIG() , अपना काम करो…

SELECT DATEDIFF_BIG( 
    millisecond, 
    SYSDATETIME(), 
    DATEADD(year, 1000, SYSDATETIME()) ) AS 'Milliseconds in 1000 years';  

परिणाम:

Milliseconds in 1000 years
--------------------------
31556908800000            

यह बेहतर है।

यदि आपको अभी भी उपरोक्त त्रुटि संदेश मिलता है, तो आप एक वास्तव में . वापस करने का प्रयास कर रहे होंगे बड़ी संख्या। उस स्थिति में आपको निम्न में से कम से कम एक करना होगा:

  • छोटी अवधि का उपयोग करें।
  • कम सटीक डेटपार्ट का उपयोग करें . उदाहरण के लिए, मिलीसेकंड की संख्या वापस करने की कोशिश करने के बजाय, इसे कुछ सेकंड के साथ आज़माएं।

यह भी ध्यान रखें कि DATEDIFF_BIG() का उपयोग करने से पहले आपको कम से कम SQL Server 2016 चलाना होगा समारोह।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अभिव्यक्ति SSRS का उपयोग करके दो डेटासेट का उपयोग करके गणना में सहायता चाहिए

  2. SQL सर्वर तालिका कॉलम में स्ट्रिंग को कैसे बदलें

  3. एसक्यूएल में जाने के साथ गतिशील क्वेरी निष्पादित करें

  4. SQL सर्वर (T-SQL) में विभाजित तालिका को क्वेरी करते समय प्रत्येक पंक्ति के लिए विभाजन संख्या लौटाएँ

  5. SQL सर्वर पर जब मैं किसी मामले के भीतर एकाधिक कॉलम कैसे चुन सकता हूं?