PDA

View Full Version : دستور sql براي پرس وجوي ساعت كار در بازه تاريخ



saeedzareh
یک شنبه 08 اسفند 1395, 12:58 عصر
سلام عزيزان.
من 2 تا جدول دارم. يكي2 ستون تاريخ وساعت از نوع datetime2داره به نامهاي start و end كه ساعت و تاريخ شروع كار و پايان كار دستگاه رو در هر روز شامل ميشه.
جدول دوم هم دو ستون از نوع datetime2داره به نامهاي changetime كه زمان(تاريخ و ساعت) تعويض قطعه اي از دستگاه و ستون nextchange زمان(تاريخ و ساعت) تعويض بعدي آن قطعه را مشخص ميكنه.
من مدت زمان كاركرد قطعه را روي دستگاه (به دقيقه) در بازه زماني دو تاريخ changetime و nextchange ميخاهم كه از روي جدول اول محاسبه ميشه.

جدول UnitTime


start
end


2017/02/16 01:00:00 ب.ظ
2017/02/16 04:00:00 ب.ظ


2017/02/18 08:00:00 ق.ظ
2017/02/18 04:00:00 ب.ظ


2017/02/19 11:00:00ق.ظ
2017/02/19 04:00:00 ب.ظ


جدول ‍Change


UnitNo
changetime
nextchange
Min


1
2017/02/15 07:00:00 ق.ظ
2017/02/18 03:00:00 ب.ظ
600


1
2017/02/18 03:00:00 ب.ظ
2017/02/19 01:00:00 ب.ظ
180


2
2017/02/18 11:00:00 ق.ظ
2017/02/22 01:00:00 ب.ظ
600


2
2017/02/22 01:00:00 ب.ظ





قطعه شماره 1 ساعت 7روز 2017/02/15 تعويض شده كه همان روز دستگاه خاموش بوده ولي در 2017/02/16 01:00:00 ب.ظ تا 2017/02/16 04:00:00 ب.ظ(180دقيقه)و2017/02/17 نيز دستگاه خاموش بوده و در 2017/02/18 08:00:00 ق.ظ
تا 2017/02/18 04:00:00 ب.ظ دستگاه روشن بوده كه در 2017/02/18 03:00:00 ب.ظ قطعه عوض شده(7 ساعت=420دقيقه) كه روي هم (180+420) 600 دقيقه قطعه كار كرده.
ممنون ميشم اگه دوستان كمكم كنيدو دستو select رو برام پيدا كنيد.

En_MK
چهارشنبه 11 اسفند 1395, 10:01 صبح
سلام
شما باید UnitNo را در جدول UnitTime به عنوان کلید خارجی داشته باشید
اونوقت با یه join ساده میتونید کاری که مدنظرتون هست را انجام بدید
الان هم میشه ولی به نظرم بااین تغییر جدولهاتون نرمال ترند

شما میتونی یه Cursor تعریف کنید به ازای هررکورد Change اجرا بشه و دو مقدار تاریخ وساعت این جدول را داخل پارامترهای Corsur بریزید
بعد تفریق این دومقدار و مقادیر ستون جدول UnitTime که بین بازه changetime وnextchange هستند را محاسبه کنید

saeedzareh
چهارشنبه 11 اسفند 1395, 15:20 عصر
سلام
ممنون از توجه شما.در جدول اصلي براي هرجدول ستوني به نام serial از نوع identity در نظر گرفتم و فكر كنم كليد خارجي در اين پرسجو به كارم نياد چون تاريخ وزمان در 4 ستون بالا از نظر ترتيب ,قاعده خاصي ندارند.

مثلا در سطر اول
changetime يك روز قبل از اولين start بوده و nextchange آن بين start و end .

ممكن بود nextchange بعد از چند start و end اتفاق بيافتد يا حتي changetime هم ممكن است قبل يا بين يا بعد از start و end در يك روز اتفاق بيافتد.

برام زمان دقيق كار كرد قطعه روي دستگاه مهمه نه مدت زمان ماندن قطعه روي دستگاه. بازم با سپاسگذاري از شما منتظر راهنمايي شما هستم.ممنون.