2009-11-25 19 views

उत्तर

6

एएनएसआई SQL-92 को परिभाषित करता है DATE - एक अंतराल प्रकार लौटने के रूप में, DATE। आपको – का उपयोग करके – एक्स्ट्राक्ट फ़ंक्शन (4.5.3) का उपयोग करके उन्हें उसी विधि का उपयोग करके इंटरवल से स्केलर्स निकालने में सक्षम होना चाहिए।

< निकालने अभिव्यक्ति > एक datetime या अंतराल पर चल रही है और एक सटीक संख्यात्मक मान datetime या अंतराल में से एक घटक के मूल्य का प्रतिनिधित्व देता है।

हालांकि, यह अधिकांश डेटाबेस में बहुत खराब रूप से लागू किया गया है। आप शायद कुछ डेटाबेस-विशिष्ट का उपयोग कर फंस गए हैं। DATEDIFF विभिन्न प्लेटफार्मों में काफी अच्छी तरह लागू किया गया है।

यह करने का "असली" तरीका यहां है।

SELECT EXTRACT(DAY FROM DATE('2009-01-01') - DATE('2009-05-05')) FROM DUAL; 

शुभकामनाएँ!

1

मेरा मानना ​​है कि SQL-92 मानक '-' ऑपरेटर के साथ दो तिथियों को घटाने का समर्थन करता है।

3

मुझे आरडीबीएमएस का उपयोग याद नहीं है जो DATE1-DATE2 और SQL 92 का समर्थन नहीं करता है।

0

एसक्यूएल 92 निम्न सिंटैक्स का समर्थन करता है:

t.date_1 - t.date_2 

EXTRACT समारोह भी एएनएसआई है, लेकिन यह SQL सर्वर पर समर्थित नहीं है। उदाहरण:

ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2) 

एक निरपेक्ष मान समारोह में गणना रैपिंग, सुनिश्चित करता है मूल्य के रूप में सकारात्मक बाहर आ जाएगा, भले ही एक छोटा तिथि पहली तारीख है।

EXTRACT पर समर्थित है:

  • ओरेकल 9i +
  • MySQL
  • Postgres
+2

यदि आप घटाव से पहले DATE से बाहर निकलते हैं, तो गणना केवल तभी काम करती है जब दोनों तिथियां एक ही महीने में हों। –

+0

एक्स्ट्राक्ट के अतिरिक्त, एमएस एसक्यूएल सर्वर भी दो तिथियों के बीच घटाना ऑपरेटर का समर्थन नहीं करता है। "संचालन डेटा प्रकार दिनांक ऑपरेटर घटाने के लिए अमान्य है।" – chugadie

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

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