2012-07-18 16 views
5

हालांकि ऐसा लगता है इस सवाल की तरह समय की एक गुच्छा कहा गया है, मैं एक जवाब यह है कि मेरे सवाल के लिए विशिष्ट है खोजने के लिए प्रतीत नहीं कर सकते हैं:"yyyy-MM-dd" से दिनांक के लिए एक स्ट्रिंग परिवर्तित

मेरे पास एक चर है जो एक एक्सएमएल फ़ाइल से सी # एक्सएमएल पार्सर द्वारा पढ़ा जाता है। यह एक स्ट्रिंग है, और "yyyy-MM-dd" प्रारूप में है। मैं इस चर को SQL का उपयोग करके हमारे डेटाबेस में पढ़ना चाहता हूं, लेकिन मुझे ऐसा करने के लिए उचित डेटाटाइम प्रारूप में होना चाहिए। दुर्भाग्य से, मुझे "yyyy-MM-dd" के लिए कोई डेटाटाइम प्रारूप नहीं मिल रहा है। क्या मैं कुछ भूल रहा हूँ?

यदि संभव हो तो मुझे अपना SQL कनेक्शन खोलने से पहले वैरिएबल को डेटाटाइम में कनवर्ट करने में सक्षम होना पसंद करूंगा।

+0

क्या आप LINQ2SQL, NHibernate का उपयोग करके संग्रहीत प्रक्रिया का उपयोग करके SQL कथन लिख रहे हैं? यह भी अजीब बात है कि आप प्रारूप के बारे में शिकायत कर रहे हैं क्योंकि yyyy-MM-dd SQL तिथियों के करीब या सटीक प्रारूप के करीब है। –

+1

@EricH yyyy-MM-dd हमेशा काम नहीं करता है। 'सेट भाषा फ़्रेंच का प्रयास करें; चयन कन्वर्ट (DATETIME, '2012-07-18'); ' –

+0

मेरे पास" yyyy-MM-dd "प्रारूप में एक स्ट्रिंग है, और मैं बस इसे SQL डेटाटाइम चर के रूप में लोड करने में सक्षम होना चाहता हूं। मैं उसको कैसे करू? बाकी मैं समझ सकता हूं कि अब मुझे लगता है। – weskpga

उत्तर

15

मैं से पहले वैरिएबल को डेटाटाइम रूपांतरित करने में सक्षम होना पसंद करूंगा, यदि संभव हो तो मेरा SQL कनेक्शन खोलना होगा।

DateTime result = DateTime.ParseExact("2012-04-05", "yyyy-MM-dd", CultureInfo.InvariantCulture); 
1

शायद ParseExact समारोह आप कर सकते हैं।

DateTime dResult = DateTime.ParseExact("2012-07-18", "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture); 
1

आप XML को LINQ उपयोग कर रहे हैं, तो आप बस तत्व डाली या DateTime से जोड़कर देखते हैं कर सकते हैं:

DateTime date = (DateTime) element; 

तो फिर तुम पैरामिट्रीकृत एसक्यूएल का उपयोग कर अपने डेटाबेस में डाल सकते हैं। मैं पर के खिलाफ तर्क दूंगा कि हारून का सुझाव: जहां भी संभव हो, अपना डेटा अपने सबसे प्राकृतिक रूप में रखें, जो वेनिला .NET में DateTime है। जितना अधिक समय आप डेटा को सार्थक प्रतिनिधित्व में रख सकते हैं, बेहतर आईएमओ।

आप XML को LINQ का उपयोग नहीं कर रहे हैं, तो smink और रियरा से समाधान ठीक हैं - लेकिन मैं दृढ़ता से एक्सएमएल के लिए LINQ का उपयोग करने की सलाह देते हैं, तो आप संभवतः एसक्यूएल सर्वर में

1

कर सकते हैं :) आप क्वेरी
का चयन करें CONVERT (VARCHAR (10), GETDATE(), 120) के रूप में [YYYY-MM-DD]

0

उपयोग कर सकते हैं आप यकीन है कि यह आप "TryParseExact" का उपयोग कर सकते काम करेंगे नहीं कर रहे हैं। यदि यह "सफलता" काम करता है तो यह सच होगा। इस तरह आप एक पार्स अपवाद को जोखिम नहीं उठा रहे हैं।

DateTime timestamp; 
bool success = DateTime.TryParseExact("2015-12-25", "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out timestamp);