में डेटटाइम डेटा प्रकार के समय भाग की तुलना करें I SQL Server 2005 में डेटटाइम डेटा प्रकार के केवल समय हिस्से की तुलना कैसे कर सकता हूं? उदाहरण के लिए, मैं उन सभी रिकॉर्ड्स प्राप्त करना चाहता हूं जिनमें MyDateField एक विशिष्ट समय के बाद है। निम्नलिखित उदाहरण यह करने का एक बहुत लंबा और संभवतः तेज़ तरीका नहीं है। मैं सभी तिथियों चाहते हैं, जहां MyDateField है 12 से अधिक: 30: 50,400SQL सर्वर 2005
SELECT *
FROM Table1
WHERE ((DATEPART(hour, MyDateField) = 12) AND (DATEPART(minute, MyDateField) = 30) AND (DATEPART(second, MyDateField) = 50) AND (DATEPART(millisecond, MyDateField) > 400))
OR ((DATEPART(hour, MyDateField) = 12) AND (DATEPART(minute, MyDateField) = 30) AND (DATEPART(second, MyDateField) > 50))
OR ((DATEPART(hour, MyDateField) = 12) AND (DATEPART(minute, MyDateField) > 30))
OR ((DATEPART(hour, MyDateField) > 12))
ध्यान दें कि यदि आपको वास्तव में तिथि और समय को अलग से संसाधित करने की आवश्यकता है, तो आप प्रभावी ढंग से सामान्यीकरण नियमों को तोड़ रहे हैं। डेटटाइम मान दिनांक पर समय पर एक विशिष्ट बिंदु है। एक तिथि और समय एक बहु-मूल्यवान क्षेत्र है, जिसे तोड़ा जाना चाहिए था। आपका कोड धीमा चलने का कारण यह है कि आपने इसे सही ढंग से सामान्य नहीं किया है। –
@Lasse - आप इसे कितना दूर ले लेंगे? निश्चित रूप से आप तारीख को संग्रहीत करने के बजाय अलग-अलग क्षेत्रों में दिन, महीना, वर्ष, घंटा, मिनट, सप्ताहांत, सप्ताहांत, तिमाही, सप्ताह स्टोर नहीं करते हैं। – JeffO
@Lasse - बेशक मैं दिनांक और समय फ़ील्ड में डेटटाइम फ़ील्ड को अलग कर सकता हूं। लेकिन फिर मुझे तारीख और समय दोनों की तुलना करने के लिए एक ही समस्या होगी। –