الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية عمل جملة استعلام عن تاريخ بين فترتين

بدأه omar ali في 3 يونيو 2010 · 8 رد · 4,016 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم يا اخوانى

انا عامل جدول يسمى بجدول اسعار الحجوزات ومكونات الجدول هوه (نوع الغرفة - الفترة من - الفترة الى -الفندق)

يوجد لدى مجموعة فنادق وكل فترة فى الشهر لها سعر معين لكل غرفة

يعنى الفترة مثلا من 2/2/2010 الى الفترة 15/3/2010 لها سعر معين وهكذا

فانا عندى مشكلة فى جملة الاستعلام اذا تم حجز غرفة بين فترتين متداخلتين يعطينى الفترتين يعنى

مثال: الفترة من 15/3/2010 الى 2/4/2010 قيمة الغرفة 100 جنيه

والفترة من 3/4/2010 الى 15/5/2010 قيمة الغرفة 150 جنيه

فاذا العميل طلب حجز من 5/4/2010 الى 10/5/2010 فسوف يأخذ من الفترة الاولى ويأخذ ايضا من الفترة الثانية

فأريد جميلة استعلام تعطى الفترتين

انا جربت عدة جمل كالاتى

Select *

from dbo.VWReservationPrices

where '1/1/2010' between ResPriceDateFrom and ResPriceDateTo

and '12/30/2010' between ResPriceDateFrom and ResPriceDateTo

and RoomTypeID=1

and HotelID=1

Select *

from dbo.VWReservationPrices

where ResPriceDateFrom <='2/26/2010'

and ResPriceDateTo >='6/25/2010'

and RoomTypeID=1

and HotelID=1

ولكنها تعمل على فترة محددة فقط

ارجو المساعده فى قرب وقت

وجزاكم الله خيرا

#2

بسم الله الرحمن الرحيم

اخى العزيز انا عملت جدول جديد دى صورته

رابطي

و عملت جملة ال query دى يارب تفيدك

select *,DATEDIFF(day,'1985/03/20',da2)*count as boda from datee where '1985/03/20' between da1 and da2 union select *,DATEDIFF(day,da1,'1985/04/20')*count as boda from datee where '1985/04/20' between da1 and da2

حيث '1985/03/20' بداية الحجز

و '1985/04/20' نهاية الحجز

جرب و ان امعك

#3

جزاكم الله خيرا يا اخى

الله يبارك فيك

اشتغلت وتمام ولكن فى استفسار بخصوص ال Function اللى ,DATEDIFF(day,'1985/03/20',da2)*count

مش عارف فايدتها ايه

#4

بسم الله الرحمن الرحيم

اخى العزيز

بالنسبة لل DATEDIFF

هى Function تستخدم لحساب فارق الأيام

اما day تستخدم عندما تريد الفارق يرجع لك بالأيام

اما count

هنا انا بعمل عملية ضرب القيمة اليومية للايجار فى عدد الايام على طول

اتمنى اكون افدتك

تم تعديل هذه المشاركة بواسطة bodaman22 في 5 يونيو 2010 في 10:07

#5

جزاكم الله خيا يا اخى انت افدتنى حقيقى

انا اعرف DateDiff فى الفيجوال دوت نت لكن معرفش انها موجودة هنا

بس حقيقى جزاكم الله خيرا ويسر الله لك حالك 

#6

الفكرة رائعة وسهلة

بارك الله فيكم

#7

السلام عليكم اخي الكريم

bodaman22

عندي مشكلة في الفترات الزمنية لصرف اجور العاملين بالاجر اليومي وهم يستلمون مستحقاتهم خلال فترات ليست ثابته اسبوع او اسبوعين او 17 يوم 36 يوم 55 يوم وهاكذا وسوف ابسط لك قدر الاستطاعة

1- اريد فتح فترات بحسب رفع كشوفات المطالبه بالصرف للفتره المرفوعه مثلا من تاريخ 01/01/2014 الى   08/01/2014 ولنعتبر هذا تاريخ صحيح والتواريخ التاليه فيها تزوير

2- المشكلة تكمن بالرفع لفترات فيها مغالطه مثلا من 05/01/2014 الى 11/01/2014  او 25/12/2013 الى 03/01/2014 او 28/12/2013 الى 15/01/2014

3-اريد عندما ادخل فتره جديد يتم التاكد ان الفترة الجديد ليست موجوده ضمن الفترات السابقة

4- طبعا يوجد اكثر من عشرون مشروع يتعاملون بهذه الطريقة واريد عند ادخال الفترة الجديده يعطيني اسماء المشاريع التي لا يوجد لها صرف خلال الفترة الجديده

 اخي العزيز الموضوع شائك وفي حال الرد منك على هذا الموضوع سوف اقوم بتحميل نموذج مصغرلقاعدة البيانات

 انا اعمل مبرمج في شركة مقاولات في اليمن و لكني لم اتعامل مع دوال التاريخ حتى اللحظه ولكني مستعد لاي مساعده تطلبها مني في البرمجة والله المستعان

ارجو الرد على منتدى الموقع وليس في الايميل لكي يستفيد غيري بعلمك اخي الكريم

وجزاك الله خير الجزاء

#8

بسم الله الرحمن الرحيم

 

 

اخى العزيز

على حسب ما فهمتك من طلبك انك عاوزه مش يدخل تاريخ  محسوب رابه قبل كده

بمعنى انك عاوزه  مثلا حسب  من يوم 01/01 الى 15/01

لو جه تانى ييحسب  اى تاريخ تانى فيه مثلا يوم 05/01 يطلع خطأ لو ده قصدك يبقى انت ممكن تستخدم جملة ال query  دى و ان شاء الله تفيدك

select * from dates where '01/15/2014' between dates.from_date and dates.to_date 
or 
'01/20/2014' between dates.from_date and dates.to_date 
or dates.from_date between '12/31/2013' and '01/15/2014'
 or dates.to_date between '01/09/2014' and '01/15/2014'

جملة ال query دى هترجع داتا لو التاريخ  ده مدخل قبل كده  سواء كان فى بداية الفترة او اخرها او فى نصها

 

 

جرب و رد على

 

اتمنى اكون افدتك

#9

قد يفيدك هذا الكود

delare @dStart date='5/1/2014'
delare @dEnd date='20/3/2014'

declare @nRowCount int=0

select @nRowCount=Count(id) 
from dbo.dates
where 
	@dStart between dates.from_date and dates.to_date 
	or
	@dEnd between dates.from_date and dates.to_date 
	or
	(@dStart< dates.from_date and @dEnd>dates.to_date )
if @nRowCount=0
print 'no rows in this time'
else
print 'there are rows in this time'

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…