2012-02-22 11 views
6

MSDN में स्पष्ट रूप से कहा जाता है कि:"डेटाटाइम 'कॉलम में मान जोड़ने से ओवरफ्लो हुआ।"

The date argument cannot be incremented to a value outside the range of its data type. In the following statements, the number value that is added to the date value exceeds the range of the date data type. The following error message is returned: "Adding a value to a 'datetime' column caused overflow."

और उदाहरण:

SELECT DATEADD(year,2147483647, '2006-07-31'); 
SELECT DATEADD(year,-2147483647, '2006-07-31'); 

जो त्रुटि का कारण बनता है:

"Adding a value to a 'datetime' column caused overflow."

यह सही लगते हैं। लेकिन कारण है कि मैं एक ही त्रुटि इस एसक्यूएल बयान को क्रियान्वित करने मिलती है:

SELECT DATEDIFF(YY,'1013-12-12',DATEADD(YY,-300,getdate())) 

अधिक विशिष्ट और केवल:

SELECT DATEADD(YY,-300,getdate()) 
+2

न्यूनतम 'डेटाटाइम '1753 है [क्योंकि ब्रिटेन ने ग्रेगोरियन कैलेंडर को अपनाया था) [http://stackoverflow.com/questions/3310569/what-is-the-ignignance-of-1-1- 1753-इन-एसक्यूएल-सर्वर/3310588 # 3310588) SQL सर्वर का कौन सा संस्करण आप पर हैं? –

+1

@ जोरो - ठीक है 'दिनांक DATEADD (वाई वाई, -300, कास्ट (getdate() डेटाटाइम 2 के रूप में))' तब आपके लिए काम करेगा। –

+0

@ मार्टिनस्मिथ हाँ, आप सही हैं। मैंने जनवरी और 1,0001 से दिसंबर 31 99 99 तक 'डेटटाइम 2' और 'डेटाटाइमसेट' प्रारूप समर्थन तिथियों की जांच की है। क्या अब तक एसक्यूएल स्टेटमेंट का मतलब है कि डिफ़ॉल्ट प्रकार का गेटडेट() फ़ंक्शन 'डेटाटाइम' है और क्यों कहा जाता है कि 'डेटाटाइम' और 'स्मालल्डटाइम' की कमी है। – gotqn

उत्तर

9

First google result for 'sql datetime range'। 1 जनवरी, 1753. यह आपकी निचली बाध्य है।

इस निचले बाउंड की उत्पत्ति के बारे में प्रश्न पर एक टिप्पणी this trivia जोड़ा गया।

+0

अच्छा। उत्तर के लिए धन्यवाद, लेकिन यह एक तरह का दुखद है। उदाहरण के लिए, यदि कोई इस वर्ष से पहले अपने डेटाबेस में ऐतिहासिक जानकारी संग्रहीत करने के लिए, तो वह कुछ अंतर्निहित कार्यों का उपयोग करने में सक्षम नहीं होगा ... – gotqn

1

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

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