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

ما طريقة استخدام العمليات الحسابية على التاريخ في جملة الاستعلام؟

بدأه maajed555 في 13 أغسطس 2012 · 3 رد · 1,956 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بعد أن بحثت ولم أجد :)

لدي قاعدة بيانات 2008 sql من نوع Database.sdf ، ولقد بحثت عن طريقة إجراء الحسابات على التاريخ من خلال جملة الاستعلام فلم أجد !

والآن السؤال : كيف أستطيع التحكم في تنسيق التاريخ ،وإجراء الحسابات عليه من جملة الاستعلام ؟

مثال / هذا الكود يظهر رسالة خطأ

        Dim SqlStr As String = "SELECT dat4 FROM dat1 where dat2 < (now() - interval 1 year)"

تم تعديل هذه المشاركة بواسطة maajed555 في 13 أغسطس 2012 في 05:21

#2

توابع الزمن والتاريخ في MS SQL محددة، لا أعلم إن كان قد تم إدراج توابع جديدة مثل NOW() أو معاملات جديدة مثل INTERVAL على SQL Server 2008 أم لا.. لكني أشك بأن هذا الاستعلام أقرب إلى MySQL فهذه التوابع والمعاملات موجودة فيه.

المهم أن الكود السابق يمكن كتابته مثلاً بالشكل:

Dim SqlStr As String = "SELECT dat4 FROM dat1 where dat2 < (getdate() - 365)"

فإن أظهر خطأ بحسب نمط العمود dat2

فجرب التالي:

Dim SqlStr As String = "SELECT dat4 FROM dat1 where cast(dat2 as nvarchar) < (getdate() - 365)"

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

احسنت اخي الكريم ... كلا الكودين يعمل بكفاءة :)

ولدي بعض الاسئلة أتمنى أن يتسع صدرك للجواب عنها :

1- استخدمت رقم (365) بدلا عن السنة الواحدة ، فهل هناك دالة تعبر عن السنة تصلح بديلا للرقم؟؟

2- هل يمنكنك ذكر بعض الامثلة على إجراء عمليات حسابية على التاريخ ، مثل (حساب الفرق بين تاريخين لعمودين داخل قاعدة البيانات) ، (حساب الفرق بين تاريخ داخل القاعدة وتاريخ خارجها) ، (طريقة استخدام الدوال m % وغيرها لعضرها بتنسيق معين)

تقبل الله منا ومنكم صالح الأعمال وجعلنا من العتقاء من النار .

#4
maajed555 كتب:

1- استخدمت رقم (365) بدلا عن السنة الواحدة ، فهل هناك دالة تعبر عن السنة تصلح بديلا للرقم؟؟

select datediff(dd, dateadd(year,-1, getdate()), getdate()) - 1

اقتباس

2- هل يمنكنك ذكر بعض الامثلة على إجراء عمليات حسابية على التاريخ ، مثل (حساب الفرق بين تاريخين لعمودين داخل قاعدة البيانات) ، (حساب الفرق بين تاريخ داخل القاعدة وتاريخ خارجها) ، (طريقة استخدام الدوال m % وغيرها لعضرها بتنسيق معين)

الفرق بين تاريخين بالأيام:

select datediff(dd, '2012-08-12 15:13:11', '2012-07-12 15:13:11')

النتيجة: -31

اعتمد على الجدول التالي في تحديد رمز الـ date part (اضغط الصورة للانتقال للصفحة في MSDN)

4rqjyv.png

حساب الفرق بين تاريخين أحدهما من القاعدة والآخر من المستخدم مثلاً: لا يختلف عن العملية السابقة.. ولكن قد يتسبب نمط العمود في مشكلة (غير متأكد) وفي تلك الحالة استخدم cast(col as nvarchar) لمعالجته بشكل مناسب.

اقتباس
طريقة استخدام الدوال m % وغيرها لعضرها بتنسيق معين

لم أفهم ماذا تقصد "بالدوال" m %

لكن إن قصدت الـ date/time format بشكل عام فهناك الكثير من المراجع عبر الانترنت:

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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

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

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

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

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