2010-07-19 10 views
9

मेरा आवेदन भंडार तारीखों के रूप में OLE स्वचालन DateTime.ToOADate() कमांड के साथ कार्य करता है।मैं कैसे एसक्यूएल सर्वर में एक तिथि के लिए एक OLE स्वचालन तिथि मान परिवर्तित कर सकते हैं

अब, मैं किसी SQL दृश्य जो मुझे संग्रहीत की तारीख से पता चलता बनाना होगा। मैं जल्दी से डबल को एक तारीख में कैसे परिवर्तित कर सकता हूं?

धन्यवाद

+2

इन कॉलमों के उपयोग के आधार पर, मैं उन्हें युगल के बजाय DATETIMEs के रूप में स्टोर करने के इच्छुक हूं। एक डबल कॉलम पर एक सूचकांक बेकार है यदि आपको फ़िल्टर को फ़िल्टरिंग के लिए डेटा को स्पष्ट रूप से परिवर्तित करना है। –

उत्तर

9

SELECT CAST(CASE WHEN OLEFLOAT > 0 THEN 
         OLEFLOAT-2.0 
       ELSE 
     2*CAST(OLEFLOAT AS INT) - 2.0 + ABS(OLEFLOAT) END as datetime) 

काम करता है? here से

एक OLE स्वचालन तारीख एक फ्लोटिंग प्वाइंट नंबर जिसका अभिन्न अंग से पहले या आधी रात के बाद दिनों की संख्या है, 30 दिसंबर 1899, और जिसका आंशिक घटक पर समय का प्रतिनिधित्व करता के रूप में कार्यान्वित किया जाता है कि दिन 24. उदाहरण के लिए, आधी रात, 31 से विभाजित दिसंबर 1899 1.0 का प्रतिनिधित्व करती है, 6 एएम, 1 जनवरी 1 9 00 का प्रतिनिधित्व 2.25 द्वारा किया गया है; आधी रात, 29 दिसंबर 1899 -1.0 का प्रतिनिधित्व करती है; और 6 एएम, 2 9 दिसंबर 18 99 को -1.25 द्वारा दर्शाया गया है।

कि काफी एक ही सिस्टम एसक्यूएल सर्वर की तरह लगता है का उपयोग करता है जब आप को छोड़कर ऑफसेट 2 से और "नकारात्मक" दिनांकों fiddled जाने की आवश्यकता एक नाव के रूप में एक तारीख डाली। एसक्यूएल सर्वर पीछे की तरफ घट जाएगा। तो -1.25 18:00 है जबकि ओएलई के लिए इसका अर्थ है 06:00।

+0

हाँ, मैं गूंगा था और पहले से पहले पूछा डाली tryed या विकल्प परिवर्तित .... लेकिन अब मैं एक और समस्या है। एमएस एसक्यूएल 2005/8 में मान 1 1 9 00 के 2 जनवरी का प्रतिनिधित्व करता है, इसलिए मेरी सभी तिथियां प्लस 2 दिन हैं! क्या यह सामान्य है? –

+0

@ नूनो मैंने इसे भी पाया। मैंने अपनी पोस्ट समायोजित की है। नकारात्मक तिथियों के साथ-साथ एक और मामूली झुर्रियां भी हैं। मैं कुछ मिनटों में फिर से अपडेट करूंगा। –

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