كيف يمكنني استبعاد أيام عطلة نهاية الأسبوع في استعلام SQL Server؟

StackOverflow https://stackoverflow.com/questions/1803987

  •  05-07-2019
  •  | 
  •  

سؤال

كيف يمكنني استبعاد القيم في ملف DateTime العمود الذي هو السبت أو الأحد؟

على سبيل المثال، في ضوء البيانات التالية:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-28 09:00:00'  -- Saturday
'2009-11-29 09:00:00'  -- Sunday
'2009-11-30 09:00:00'  -- Monday

هذه هي النتيجة التي أبحث عنها:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-30 09:00:00'  -- Monday

شكرًا!

هل كانت مفيدة؟

المحلول

عند التعامل مع يوم لمدة أسبوع والحسابات، من المهم أن تأخذ في الاعتبار الحالي <لأ href = "http://technet.microsoft.com/en-us/library/ms181598.aspx" يختلط = "noreferrer "> DATEFIRST الإعدادات. سيقوم هذا الاستعلام دائما تستبعد بشكل صحيح أيام عطلة نهاية الأسبوع، وذلك باستخدام @@DATEFIRST لحساب أي وضع ممكن لليوم الأول من الأسبوع.

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)

نصائح أخرى

SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')

بافتراض أنك تستخدم SQL Server، استخدم DATEPART مع dw:

SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);

يحرر: يجب أن أشير إلى أن القيمة الرقمية الفعلية التي يتم إرجاعها بواسطة DATEPART(dw) يتم تحديدها بواسطة القيمة المعينة باستخدام SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx

وجرب وظيفة DATENAME():

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'

والجواب يعتمد على الاسبوع لبدء الخادم الخاص بك إعداد، لذلك إما

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)

وإذا الاحد هو اليوم الأول من الأسبوع للملقم

أو

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)

وإذا الاثنين هو اليوم الأول من الأسبوع للملقم

وتعليق إذا كنت قد حصلت على أي أسئلة: -)

حساب أيام العمل المتبقية في عمود جدول كقيمة افتراضية - تم تحديثها

إذا كنت تستخدم SQL، فإليك الاستعلام الذي يمكن أن يساعدك: http://gallery.technet.microsoft.com/Calculate...

وحاول هذا الرمز

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top