ورود

View Full Version : حرفه ای: بررسی یک بازه تاریخی در بین چندین رکورد



iroogle
یک شنبه 30 آبان 1395, 12:18 عصر
سلام
یک جدول بصورت زیر دارم
143560
حالا میخوام یه بازه زمانی رو که وارد میکنم ببینم آیا کل این بازه در دیتابیس وجود داره یا نه
بطور نمونه:
1- تاریخ 12-01-2016 تا 20-01-2016 رو وارد میکنم مقدار true رو برگردونه چون تمام این بازه تاریخی در این جدول وجود دارد
2- تاریخ 17-01-2016 تا 22-01-2016 رو مقدار false رو برگدونه چون تاریخ 21 و 22 ژانویه در دیتابیس وجود ندارد

golbafan
یک شنبه 30 آبان 1395, 23:22 عصر
اول این تابع رو تعریف کن و اسمش رو بزار مثلا date_list


CREATE PROCEDURE `DateList`(IN `dt1` date,IN `dt2` date)
BEGIN
select * from
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between dt1 and dt2;
END;

golbafan
یک شنبه 30 آبان 1395, 23:32 عصر
بعدش این کار رو بکن:

1- لیست تمام تاریخ های موجود در جدول رو بدست بیار و در جدول موقت A بزار
2- لیست تمام تاریخ های موجود در بازه مورد نظر رو بدست بیار و در جدول موقت B بزار
3- A رو با B بر اساس تاریخ join کن و در جدول C بزار
5- تعداد رکورد جدول C رو با B مقایسه کن و اگر برابر بود یعنی بازه تاریخی صحیح است