2010-02-16 14 views
9

मेरे पास डेटाबेस में टाइमस्टैम्प का प्रकार है, जिसे cte कोड में बाइट [] में परिवर्तित किया गया है, और मुझे इसे डेटटाइम मान में रूपांतरित करने की आवश्यकता है। तो मैं बाइट्स की एक सरणी से डेटटाइम में कनवर्ट करना चाहता हूं।एक बाइट [] में डेटाटाइम सी # को कैसे परिवर्तित करें?

byte[] byteValue = someValue; 
long longVar = BitConverter.ToInt64(byteValue); 
DateTime dateTimeVar = DateTime.FromBinary(longVar); 

यह ठीक है:

पहले से ही इस कोड का इस्तेमाल किया?

+4

आप पहली जगह में [] बाइट के लिए टाइमस्टैम्प क्यों परिवर्तित किया? –

+1

यह जानने के बिना कि बाइट [] कहां से आया था, आपको अंतहीनता के मुद्दों से निपटना पड़ सकता है। –

+0

यह "ठीक" से आपका क्या मतलब है इस पर निर्भर करता है। मैंने कभी भी इस दृष्टिकोण की कोशिश नहीं की है, लेकिन यह किसी डेटाबेस से दिनांक और समय पुनर्प्राप्त करने का एक विशेष रूप से सहज तरीका प्रतीत नहीं होता है। –

उत्तर

6

नहीं, यह सही नहीं है।

FromBinary विधि ToBinary विधि का उपयोग करके बनाई गई एक लंबी मान लेती है। इसमें Kind और Ticks घटक शामिल हैं, और यह डेटाबेस टाइमस्टैम्प में नहीं है।

लंबे मूल्य प्राप्त करने के लिए BitConverter का उपयोग करना सही है, लेकिन फिर आपको टाइम स्टैंप के लिए समय मूल लेना होगा और सही इकाई के रूप में लंबा मूल्य जोड़ना होगा। मान लिया जाये कि यह एक MySQL डेटाबेस से एक टाइमस्टैम्प है, यह IIRC 1980/01/01 से मिलीसेकेंड की संख्या है:

long longVar = BitConverter.ToInt64(byteValue, 0); 
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar); 
+0

thnx गुफा, मैं अब कोशिश कर रहा हूं –

+0

प्रारंभ इंडेक्स पैरामीटर बिटकॉन्टर विधि में गायब है। यह बिटकोनवर्टर होना चाहिए। ToInt64 (बाइटवैल्यू, 0) https://msdn.microsoft.com/en-us/library/system.bitconverter.toint64(v=vs.110).aspx –

+0

@AliHasan: हाँ, की जांच करें पाठ्यक्रम। इसे स्पॉट करने के लिए धन्यवाद, मैंने जवाब को सही किया। – Guffa

13

SQL Server (अब पंक्तिवर्धक कहा जाता है) में एक टाइमस्टैम्प कॉलम डेटाटाइम मान में कनवर्ट करने योग्य नहीं है - यह पूरी तरह से सर्वर द्वारा असाइन किए गए एक monotonically बढ़ते मूल्य है।

+0

तो, इसे डेटाटाइम के साथ नहीं करना है? तो इसका उपयोग क्यों किया जाता है, विशेष रूप से, यह डेटाटाइम मूल्यों या अवधारणा से क्यों जुड़ा हुआ है? (शायद सवाल बिल्कुल सटीक नहीं है, लेकिन इस बार मैंने विश्वास किया था, मुझे यकीन नहीं है कि मैंने इसे कहीं पढ़ा है, कि यह डेटाटाइम के साथ किसी तरह से संबंधित था) –

+4

@george_test - मूल रूप से, यह बुरी तरह से नामित है - यही कारण है कि अब "पंक्तिवृत्त" कहा जाता है, न कि "टाइमस्टैम्प"। यह (SQL सर्वर में) समय * से संबंधित * * से संबंधित है, जैसा कि पहले से ही वर्णित है (जैसा कि पहले से वर्णित है) monotonically बढ़ रहा है। –

+0

thnx thnx और thnx फिर से। मैंने डेट प्रकार का एक और कॉलम जोड़ा, और अब मैं अपने उद्देश्यों के लिए इसका उपयोग करता हूं। –

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