sql server 2005 - Filtering SQL Rows -


टेबल स्कीमा

  आईडी सक्रिय करें_Date InActivate_Date 1 2009-12-18 10:25: 19.470 2010-01-13 08: 32: 30.130 2 2009-12-18 10: 25: 1 9, 470, 2010-01-13 08: 32: 30.253 3 2009-12-18 10: 25: 1 9, 470, 2010-01-13 08:32 : 30.363 4 2009-12-18 10: 25: 1 9, 470, 2010-01-13 08: 32: 30.583 5 2009-12-18 10: 25: 1 9 .4070 2010-01-13 08: 32: 30.473 6 2010-01-13 14: 46: 53.880 2010-01-13 14: 50: 45.443 7 2010-01-13 08: 32: 30.600 2010-01-13 14: 46: 23.833 8 2010-01-13 08: 32: 30.600 2010-01 -13 14: 46: 23.833 9 2010-01-13 08: 32: 30.600 2010-01-13 14: 46: 23.833 10 2010-01-13 08: 32: 30.600 2010-01-13 14: 46: 23.833 11 2010-01-13 14: 46: 53.880 2010-01-13 14: 50: 45.443 12 2010-01-13 14: 44: 56.397 2010-01-13 14: 46: 23.833 13 2010-01-13 12:42 : 59.113 2010-01-13 14: 46: 23.833 14 2010-01-13 12: 42: 59.113 2010-01-13 14: 46: 23.833 15 2010-01-13 12: 42: 59.113 2010-01-13 14 : 46: 23.833 16 2010-01-13 12:42: 59.113 2010-01-13 14: 46: 23.833  

इनपुट पैरामीटर:

  घोषित @StartDate दिनांक समय घोषित @EndDate दिनांक समय घोषित @FirstShiftStartTime varchar (8) @FirstShiftEndTime varchar घोषित (8) सेट @StartDate = '2010/01/01' सेट @EndDate = '2010/01/03' सेट @FirstShiftStartTime = '15: 00: 00 'सेट @FirstShiftEndTime = '17: 00: 00 ' 

आउटपुट:

आउटपुट को सभी पंक्तियों में होना चाहिए ताकि प्रत्येक दिन शिफ्ट के रूप में समय फिल्टर लागू किया जा सके। इसलिए यदि हम इन मापदंडों का उपयोग करते हैं, तो आईडी 1 से 5 तक पहले 5 पंक्तियां चाहिए।

तो आउटपुट फ़िल्टर में इस रूप में लागू किया जाना चाहिए:

  1/01 / 2010 से 15:00:00 से 17:00:00 2/02/2010 से 15:00:00 से 17:00:00 3/03/2010 से 15:00:00 से 17:00:00 तक  

मुझे आशा है कि मैंने अपना आत्म स्पष्ट कर दिया है:

मैंने इसका उपयोग करने की कोशिश की:

  ((तिथिपटा (टेबल। एक्टिवेट_Date) & lt; = @ STARTDATE और DatePart (Table.INActivate_Date) & gt; @StartDate) या (DatePart (Table.Activate_Date) & gt; = @StartDate और DatePart (Table.InActivate_Date) के & lt; @EndDate)) और ((TimePart (Table.Activate_Date) & gt; = @ FirstShiftStartTime) और (TimePart (Table.INActivate_Date)। & lt; @FirstShiftEndTime))  

लेकिन यह अगर सक्रिय तिथि काम करते हैं और निष्क्रिय तारीख से अधिक दिनों तक फैला नहीं करेंगे

< P> एक और तरीका जो मुझे मिल सकता है एक दिन को पाशन के साथ एक अस्थायी तालिका बनाने और फिर अस्थायी तालिका को फिल्टर के साथ भरें और उसके बाद उपरोक्त विधि को लागू करें।

मुझे उम्मीद है कि वहां कुछ समान होना चाहिए ले तो मैं सोच रहा हूँ

किसी भी मदद की अत्यधिक सराहना की जाएगी।

मुझे नहीं लगता कि आप कर सकते हैं तारीख और समय को अलग से देखें यदि आप जानना चाहते हैं कि 02/02/2010 को 1500 और 1700 के बीच सक्रिय था, और पंक्ति में 01/01 की सक्रिय तारीख और 03/03 की निष्क्रिय तारीख होती है, तो यह पूरे दिन 02 / 02, इसलिए डीबी में प्रारंभ / समाप्ति समय प्रासंगिक नहीं है।

यदि सक्रिय या निष्क्रिय दिनांक प्रश्न में दिनांक (02/02) पर होता है तब आपको आवश्यकता है । समय विचार करने के लिए

मैं आप इस छद्म कोड की तरह कुछ चाहता हूँ लगता है:

  (ActivateDate & LT; @StartDate या (ActivateDate = @StartDate और ActivateTime & lt; = @ShiftStartTime)) और (InActivateDate & gt; @EndDate या (InActivateDate = @EndDate और InActivateTime & gt; = @ShiftEndTime))  

Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -