यह पोर्टेबिलिटी समस्या केवल शाब्दिक साथ लागू होता है।
मुझे विश्वास नहीं है कि ऐसा करने का एक पूर्ण पोर्टेबल तरीका है क्योंकि SQL सर्वर एएनएसआई शाब्दिक DATE कीवर्ड का समर्थन नहीं करता है और सभी CAST, CONVERT, TO_DATE, और दिनांक फ़ंक्शंस सभी प्लेटफ़ॉर्म पर समान नहीं हैं।
ध्यान दें कि आपकी दूसरी क्वेरी को Select * from MyTable where myDate > '20130410'
के रूप में भी लिखा जा सकता है।
यह अच्छा होगा अगर ANSI DATE शाब्दिक सुविधा (डीबी/2 और टेराडाटा दोनों के लिए SQL सर्वर में समर्थन था) अच्छा होगा।
मुझे इस पर एक कनेक्ट आइटम नहीं मिला, और न ही SQL सर्वर ANSI DATE, TIME और TIMESTAMP शाब्दिक कीवर्ड का समर्थन क्यों नहीं करता है।
मैं आपके परिदृश्य में सोच रहा हूं, क्या इसके बजाय पैरामीटर का उपयोग करना संभव होगा?
जैक की टिप्पणी Common SQL to compare dates in SQL Server and ORACLE में समाधान इस कोड को पोर्टेबल बना देगा, लेकिन आपको एक गैर-पोर्टेबल स्केलर फ़ंक्शन होना होगा। यह आपके लिए एक व्यवहार्य विकल्प हो सकता है - ध्यान दें कि SQL सर्वर में, आपको स्केलर फ़ंक्शन को अपनी स्कीमा के साथ उपसर्ग करना होगा - यह ओरेकल कोड और एसक्यूएल कोड के बीच एक और झुर्रियां पेश कर सकता है यदि आप स्कीमा को एक ही नाम नहीं बना सकते (ओरेकल में नोट करें, यदि आप फ़ंक्शन के अंदर फ़ंक्शन डालते हैं तो उपसर्ग स्कीमा के बजाय पैकेज का नाम हो सकता है)
स्रोत
2013-04-16 14:52:24
@Aaron Bertrand कोई उपरोक्त में काम नहीं करता है। यह त्रुटियों का कहना है कि यह एक अवैध महीना है। – CathalMF
@ कैथलएमएफ जो [आपकी एनएलएस सेटिंग्स पर निर्भर करता है] (http://www.sqlfiddle.com/#!4/d41d8/9820) जैसा कि एड द्वारा उल्लिखित है। –
@ जैकडॉगस - आप सही हैं; मैंने वहां बिंदु को बढ़ा दिया। मुझे "गन्दा" या "जोखिम भरा" कहा जाना चाहिए था और उस पर छोड़ दिया था। मैं टिप्पणी संपादित करूंगा। –