में एक लीप सेकेंड संग्रहीत करना इस सप्ताहांत एक अतिरिक्त लंबा है क्योंकि extra second 3012 को 23:59:59
के बाद डाला जाएगा।SQL सर्वर 2008
हमारे पास एक प्रणाली है जो घड़ी के आसपास बहुत सारे डेटा लॉग करती है और व्यवसाय नियमों में से एक यह है कि एक ही समय में एक ही समय में होने पर दो रिकॉर्ड रिकॉर्ड नहीं किए जा सकते हैं।
हम यूटीसी डेटाटाइम्स का उपयोग नए datetimeoffset
डेटा प्रकार के साथ कर रहे हैं, लेकिन जहां तक मैं कह सकता हूं कि वे आपको एक मिनट में 60 सेकंड से अधिक नहीं होने देंगे।
निश्चित रूप से, यह एक त्रुटि फेंकता है:
select datediff(ss, getdate(), '30-jun-2012 23:59:60')
लेकिन यूटीसी देवताओं के अनुसार यह एक वास्तविक समय होगा। घटनाक्रम 23:59:60
पर हो सकते हैं लेकिन हमारे पास इस तथ्य को रिकॉर्ड करने का कोई तरीका नहीं है।
23:59:59
प्लस वन सेकंड ऑफसेट को अभी भी 1 जुलाई को 00:00:00
माना जाएगा।
मैं सही तरीके से लॉग इन कैसे कर सकता हूं कि डेटाबेस में 23:59:60
पर कोई घटना हुई?
ऐसा लगता है कि आपके व्यवसाय नियम वास्तविकता को अनदेखा करते हैं। –
कैसे? लॉग इन होने वाली घटनाएं शारीरिक रूप से एक से अधिक बार नहीं हो सकती हैं। मुझे पता नहीं था कि आप एक ही परियोजना पर काम कर रहे थे। – Widor
मैं जस्ट में बात कर रहा था, लेकिन वास्तविकता यह है कि सिस्टम लीप सेकेंड के लिए टाइम स्टैंप स्टोर नहीं कर सकता है, इस प्रकार लीप सेकेंड के दौरान प्रति सेकंड एक ईवेंट लॉग करना संभव नहीं है। व्यापार नियमों को ऐसी चीज की आवश्यकता होती है जिसे परंपरागत माध्यमों से आसानी से पूरा नहीं किया जा सके। नियमों पर पुनर्विचार करें, लीप सेकंड के लिए अपवाद बनाएं, या पागल वन-ऑफ कोड लिखें। –