में दिन-प्रतिदिन जोड़ने के लिए मैं इस कोड को लिख रहा हूं। यहां डीटी फ़ंक्शन में इनपुट है, साथ ही साथ कुछ भी है। कॉलम एक्सप एक टी-एसक्यूएल दिनांक कॉलम है, जो लिंक के माध्यम से डेटटाइम के रूप में आता है।लिंक से एसक्यूएल
return (from a in dataContext.TableOfA
where a.name == "Test" &&
a.Exp.Value.AddDays(Convert.ToDouble(Someint)) >= new DateTimeOffset(dt)
select a).First();
सी # में, आप एक दिन के रूप में एक दिन के रूप में एक डबल जोड़ सकते हैं। मतलब आप 1.5 दिन जोड़ सकते हैं। टी-एसक्यूएल में आप केवल 1 दिन जोड़ सकते हैं, फिर 12 घंटे। आपको प्रत्येक भाग के लिए एक int जोड़ना होगा। तो जब लिंकक टी-एसक्यूएल में एडडेज़ का अनुवाद करता है, तो यह मेरे दिनों की संख्या मिलीसेकंड में परिवर्तित करता है, और उनको जोड़ता है। यह इसे सभी सटीकता देता है जो डबल को सी # देता है।
यहां रगड़ है। जब यह SQL हो जाता है, तो मुझे त्रुटि मिलती है:
The datepart millisecond is not supported by date function dateadd for data type date
असल में आप किसी तारीख को मिलीसेकंड नहीं जोड़ सकते हैं। अच्छा मजाक नहीं। लेकिन मैं यहां कुछ अनुवाद कैसे प्राप्त करूं? मैं एक तारीख में int दिन जोड़ना चाहता हूँ। क्या यह केवल उन अन्य लोगों को नकारात्मक जोड़ने के लिए करना है जो मैं तुलना कर रहा हूं? अगर मैं एक में जोड़ने के दौरान कॉलम की तुलना करना चाहता हूं तो क्या होगा?
अद्यतन 1
Keith wrote, A command like datepart(millisecond, 10000, myDate) has been supported in T-SQL since at least SQL Server 2000. This error suggests that whatever database you are using does not support the millisecond date part, which seems strange to me.
कृपया ध्यान दें मैं एसक्यूएल सर्वर 2008 यह DATE डेटा प्रकार पर समर्थित नहीं है का उपयोग कर रहा हूँ। यह डेटाटाइम पर समर्थित है।
कम से कम SQL Server 2000 से टी-एसक्यूएल में डेटपार्ट (मिलीसेकंड, 10000, myDate) जैसे कमांड को समर्थित किया गया है। यह त्रुटि बताती है कि जो भी डेटाबेस आप उपयोग कर रहे हैं वह मिलीसेकंद दिनांक भाग का समर्थन नहीं करता है, जो मुझे अजीब लगता है । – Keith
यह DATE डेटा प्रकार पर समर्थित नहीं है। यह डेटाटाइम पर समर्थित है। –
यह अधिक समझ में आता है। खैर यदि आपके पास डीबी डिज़ाइन पर नियंत्रण है, तो सरल समाधान इस कॉलम को DATE से एक DATETIME में बदलना होगा। जाहिर है अगर आप इस सवाल से पूछ रहे हैं, तो ऐसा कुछ नहीं है जिस पर आपका नियंत्रण है? – Keith