سؤال

كيف يمكنني التصفية للسجلات على DataTable والتي هي في تاريخ معين؟

لقد حاولت عادي [datecol] = #11 March 2010# و CONVERT([datecol],'System.DateTime') = #11 March 2010#. وبعد مع عدم وجود حظ.

MSDN: بناء جملة التعبير ROWFILTER

المحلول

[datecol] >= #11 March 2010 00:00# AND [datecol] <= #11 March 2010 23:59:59#
هل كانت مفيدة؟

المحلول

select 
   ...
   ...
   ...

where [datecol] between '11 March 2010 00:00:00' and '11 March 2010 23:59:59'

آسف، رأس خاطئ على. فقط كنت تكتب الكثير من SQL!

جرب هذا

[datecol] >= #03/11/2010 00:00:00# AND [datecol] <= #03/11/2010 23:59:59# 

أو

 [datecol] >= '03/11/2010 00:00:00' AND [datecol] <= '03/11/2010 23:59:59' 

نصائح أخرى

select * from [X] WHERE DATEDIFF(dd,[datecol],'3/11/2010') = 0

هناك الكثير من القوة مع وظيفة datediff،

DATEADD(DAY,DATEDIFF(DAY,0,[datecol]),0) هو طريقة أخرى يمكنك تجريد الجزء الزمني من العمود إذا كنت بحاجة إلى بيانات المعالجة الأخرى. نحن نستخدم هذا إذا كنا نرغب في تجميع العناصر التي تحدث أثناء النهار، أو بعض الاستخدامات الأخرى إذا احتجنا إلى تجميع العناصر التي تحدث أثناء ساعات أو بعد ساعات.

يمكنك استخدام رمز LINQ بعد تصفية DataTable صف مجموعة وفقا لذلك:

var resultSet = from tbl in dt.AsEnumerable()
                where tbl.Field<DateTime>("ColName").ToString("dd/MMM/yyyy") == "07/Aug/2010"
                select tbl;

علاوة على ذلك، للحصول على نظرة ثاقبة استعلامات LinQ الأساسية على DataTables شاهد النشر تصفية DataTable باستخدام LinQ

أفضل RGDS.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top