Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

VB.NET में डेटटाइम को हेक्स समकक्ष में कनवर्ट करें

यह उत्तर केवल .NET DateTimes के रूपांतरण को एक बाइनरी प्रारूप में संबोधित करता है जो SQL सर्वर के datetime के बराबर है। डेटाटाइप, इसलिए मेरा मानना ​​​​है कि यह काफी अलग है कि यह एक अलग उत्तर की गारंटी देता है (मैंने यहां और यहां यह सुनिश्चित करने के लिए कि यह ठीक था)।

जैसा कि @Martin Smith ने बताया, datetime . का बाइनरी प्रारूप एक विशिष्ट समय के बाद से केवल कई टिक नहीं हैं।

datetime 8 बाइट्स के रूप में संग्रहीत किया जाता है, पहला 4 बाइट्स 01-01-1900 से दिनों की संख्या है और दूसरा 4 बाइट्स उस दिन की मध्यरात्रि से "टिक" की संख्या है, जहां एक टिक 10/3 मिलीसेकंड है।

एक .NET डेटटाइम को एक समान बाइनरी प्रतिनिधित्व में बदलने के लिए, हमें '01-01-1900' के बाद से दिनों की संख्या निर्धारित करने की आवश्यकता है, इसे हेक्स में परिवर्तित करें, और फिर मध्यरात्रि से टिकों की संख्या, जो थोड़ा जटिल है एक .NET टिक 100ns है।

उदाहरण के लिए:

DateTime dt = DateTime.Now;
DateTime zero = new DateTime(1900, 1, 1);

TimeSpan ts = dt - zero;
TimeSpan ms = ts.Subtract(new TimeSpan(ts.Days, 0, 0, 0));

string hex = "0x" + ts.Days.ToString("X8") + ((int)(ms.TotalMilliseconds/3.33333333)).ToString("X8");

जब मैंने यह कोड चलाया, dt था 9/14/2011 23:19:03.366 , और यह hex . सेट करता है करने के लिए 0x00009F5E01804321 , जो 2011-09-14 23:19:03.363 . में बदल गया SQL सर्वर में।

मेरा मानना ​​​​है कि आपको गोल करने के कारण सटीक तिथि प्राप्त करने में हमेशा समस्या होगी, लेकिन यदि आप ऐसी क्वेरी का उपयोग कर सकते हैं जहां डेटाटाइम को मिलीसेकंड तक बिल्कुल मिलान नहीं करना है, तो यह काफी करीब हो सकता है।

संपादित करें

मेरे द्वारा पोस्ट किए गए पहले उत्तर के तहत मेरी टिप्पणी में, मैंने SQL Server 2008 के बारे में पूछा, क्योंकि datetime2 डेटा प्रकार 100ns की सटीकता के साथ समय को स्टोर करता है (कम से कम, यह डिफ़ॉल्ट परिशुद्धता के साथ करता है), जो .NET के साथ अच्छी तरह से मेल खाता है। यदि आप रुचि रखते हैं कि SQL सर्वर में बाइनरी स्तर पर इसे कैसे संग्रहीत किया जाता है, तो देखें मेरा जवाब एक पुराने प्रश्न के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # में SQL सर्वर संग्रहीत प्रक्रिया आउटपुट पैरामीटर तक पहुंचना

  2. SQL सर्वर में विश्लेषण सेवाओं (SSAS) डेटाबेस के सारणीबद्ध मॉडल प्रसंस्करण को स्वचालित करना

  3. टी-एसक्यूएल, टिक, टाइमस्टैम्प

  4. SQL सर्वर ऑफ़सेट समकक्ष

  5. INSERT INTO ... कथन के भाग को दोहराए बिना अनेक पंक्तियाँ सम्मिलित करें?