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

كيف يمكن البحث عن وقت

مغلق
بدأه waleedhm في 6 أكتوبر 2006 · 5 رد · 1,620 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

عندى جدول لتسجيل المواعيد ويوجد به حقلين الاول StartTime و الثانى EndTime من نوع nvarchar

ويتم تسجيل الوقت بالشكل التالى

4 10/5/2006 12:00 ص 12:10 ص

5 10/5/2006 1:00 ص 2:30 ص

6 10/5/2006 3:00 ص 4:30 ص

السؤال كيف يمكن البحث عن المواعيد

يعنى يوم 10/5/2006 المواعيد ما بين الساعة 12 ص الى الساعة 2 ص

عملت convert فى جملة الاستعلام ولكن تحدث معى مشاكل ارجو سرعة الرد

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#2

أنا صراحة ما بعرف ليش ما بتستخدموا نمط التاريخ و الوقت

عموما لازم ننبه على التحويل و لازم ننتبه

على فرق التحويل

use xData 		-- Or TempDB
Go 

If Exists ( Select * From SysObjects Where name like 'xTable_NVarChar_DateField_Error' AND xType = 'U' ) 
Drop Table xTable_NVarChar_DateField_Error 
Go 

Create Table xTable_NVarChar_DateField_Error
(
	StartDate NVarChar ( 40 ) , 
	EndDate NVarChar ( 40 ) 
)
Go 

Insert Into xTable_NVarChar_DateField_Error Values 
(
	Convert ( NVarChar , 
			DateAdd ( hh , 0 , GetDate() )
		, 113 ) , 
	Convert ( NVarChar , 
			DateAdd ( hh , 1 , GetDate() ) 
		, 113 ) 
)
Go 

Insert Into xTable_NVarChar_DateField_Error Values 
(
	Convert ( NVarChar , 
			DateAdd ( hh , 2 , GetDate() )
		, 113 ) , 
	Convert ( NVarChar , 
			DateAdd ( hh , 3 , GetDate() ) 
		, 113 ) 
)
Go 

Insert Into xTable_NVarChar_DateField_Error Values 
(
	Convert ( NVarChar , 
			DateAdd ( hh , 3 , GetDate() )
		, 113 ) , 
	Convert ( NVarChar , 
			DateAdd ( hh , 4 , GetDate() ) 
		, 113 ) 
)
Go 

--	Make the Time 
Select 	Convert ( DateTime , 
		DateAdd ( hh , -1 , GetDate () )
		, 113 ) , 
	Convert ( DateTime , 
		DateAdd ( hh , 3 , GetDate () )
		, 113 ) 

--	Issue
Select * From xTable_NVarChar_DateField_Error Go 

--	Select 
Select 
	* 
From xTable_NVarChar_DateField_Error Where DateDiff ( ss ,  
		Convert ( DateTime , 
			DateAdd ( hh , -1 , GetDate () )
		, 113 ) 
	, StartDate ) >= 0 AND DateDiff ( ss ,
		Convert ( DateTime , 
			DateAdd ( hh , 3 , GetDate () )
		, 113 ) 
	, EndDate ) <= 0 
Go 

--	Select 
Select 
	* 
From xTable_NVarChar_DateField_Error Where DateDiff ( ss ,  
		DateAdd ( hh , -1 , GetDate () )
	, StartDate ) >= 0 AND DateDiff ( ss ,
		DateAdd ( hh , 3 , GetDate () )
	, EndDate ) <= 0 
Go 

--	Created By A.N.Zayed
--	6/10/2006
--	Have Fun

إذا في مشاكل أرجوا انه تخبرني

سلام

#3

السلام عليكم ورحمة الله وبركاته :

أنا آسف يا أخي محمد على ما جرى الأمس فلم يكن الـ Messanger عندي على ما يرام ..

على كل أرى الحل بالشكل التالي :

ببساطة :

أولاً جرب الكود هذا :

Select Cast( REPLACE (REPLACE ( '10:30 م' , 'م' , 'PM' ) ,'ص'  , 'Am')  AS SmalldateTime) 
ثم 
Select Cast( REPLACE (REPLACE ( '2:5 ص' , 'م' , 'PM' ) ,'ص'  , 'Am')  AS SmalldateTime)

ما هي النتائج يا ترى ...

Where @time1 
  between 
	Cast( REPLACE (REPLACE ( timeColumn1 , 'م' , 'PM' ) ,'ص'  , 'Am')  AS SmalldateTime) And
	Cast( REPLACE (REPLACE ( timeColumn2 , 'م' , 'PM' ) ,'ص'  , 'Am')   AS SmalldateTime )

و تحل المشكلة بإذن الله ..

تم تعديل هذه المشاركة بواسطة imadouzoun في 6 أكتوبر 2006 في 14:41

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#4

السلام عليكم

جزاكم الله خيرا يا شباب

اخى Desigen لو انا استخدمت datetime كيف استطيع البحث بين وقتين يعنى ادخل الوقت فقط 10:10 am الى 1:00 pm

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#5

أيضاً تستطيع ذلك أخي محمد ...

لو كان هذا هو السبب .. فأظن أنه بالإمكان العودة إلى النوع DateTime مجدداً .. :)

إليك مثال بسيط جداً :

print right(convert( smalldatetime, getdate() , 0) , 7)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#6

شوف أخي

أحسن شيئ إنك تتستخدم DateDiff

أنا هشرح لك هل كود

--	Select 
Select 
	* 
From xTable_NVarChar_DateField_Error Where DateDiff ( ss ,  
		DateAdd ( hh , -1 , GetDate () )
	, StartDate ) >= 0 AND DateDiff ( ss ,
		DateAdd ( hh , 3 , GetDate () )
	, EndDate ) <= 0 
Go

هلق الكود هاذ

DateAdd ( hh , -1 , GetDate () )

لازم تضع بداله التاريخ المقارنة

التاريخ + الساعة

بصيغة قياسية

dd mon yyyy hh:mm:ss:mmm(24h)

و بعدين تطلب من تابع

DateDiff

إنه يعطيك الإختلاف بالوقت

بين وقتين و الإختلاف يتم حسب الدقيقة

و بالتالي إذا كان الإختلاف صفر

فهذا التاريخ مطابق و الوقت أيضا مطابق

و ساعتها إنت بتحدد هل هذا الوقت لازم يكون أكبر أو أصغر حسب جملة الإستعلام

بنصحك تقرأ

DateDiff & Convert ( DateTime , VarChar , Value )

من الـ MSDN

سلام

هذا الموضوع مغلق.

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