وقت بخیر دوستان
من تو کوئری که میگیرم دوتا تاریخ میلادی دارم. میخوام بدونم ایا امکانش هست هنگام کوئری گرفتن تعداد روزهای جمعه بین اون دوتاریخ رو هم بدست بیارم و تو یک ستون نشون داد؟
وقت بخیر دوستان
من تو کوئری که میگیرم دوتا تاریخ میلادی دارم. میخوام بدونم ایا امکانش هست هنگام کوئری گرفتن تعداد روزهای جمعه بین اون دوتاریخ رو هم بدست بیارم و تو یک ستون نشون داد؟
فک کنم سوال سخت و عجیب غریبی بود
اینجا رو یه نگاه بنداز .
https://barnamenevis.org/showthread.p...=1#post2377934
با این دستور هم میتونی بفهمی که تاریخ مورد نظرت چه روزی از هفته س .
SELECT DATEPART(dw,GETDATE())
البته من اومدم روزها رو تویه جدولم نگه داشتم .
بعد فقط یه قیاس زدم
کوئری رو ببینی میفهمی
SELECT *, DATEPART(dw,GETDATE()) from tbl where weekDays like'%' + cast(DATEPART(dw,GETDATE()) asnvarchar) + '%'
اینجا رو هم یه نگاهی بنداز
https://stackoverflow.com/questions/...ween-two-dates
جدولی دارم که تعداد روزهای مرخصی یک فرد رو نگه میداره . من با کوئری زیر تونستم تعداد روزهای مرخصی یک فرد رو بر اساس تاریخ اول و آخر ماه بدست بیارم. طوری که اگه شروع تاریخ از ماه قبل بود اونو دیگه حساب نمیکنه فقط اون تعداد روزی که تو اون تاریخ رو حساب میکنه . یا اگه تاریخ اتمام مرخصی تو ماه بعد باشه رو هم فقط تعداد روز تو اون ماه رو حساب میکنه .
تنها موردی که مونده کسر تعداد جمعه بین دو تاریخ هست. مثلا اگه فردی از تاریخ 10 تا 18 رفته مرخصی و 15 جمعه باشه میخوام اون جمعه رو کسر کنم. کوئری رو میزارم خودتون ببینید چی نوشتم (به جز محاسبه جمعه)
******
فیلد های جدولم هم اینه.
شماره پرسنلی-تاریخ شروع مرخصی-تاریخ اتمام مرخصی-تعداد روز مرخص-ساعت شروع مرخصی-ساعت اتمام مرخصی- جمع ساعت مرخصی
که در صورتی که مرخصی روزانه باشد تاریخ ها ثبت میشه و در صورتی که مرخصی ساعتی باشه ساعت ها ثبت میشه. البته یه فیلد نوع مرخصی هم دارم که مشخص میکنه روزانه هست یا ساعتی
آخرین ویرایش به وسیله رامین مرادی : چهارشنبه 12 مهر 1396 در 08:39 صبح
اینطوری نمیشه تست کرد.
اگر میتونی اسکریپت جداول رو بزار (به همراه توضیح که هر ستون برای چی هست)، نمیتونی پیام خصوصی کن. همچنین یکسری insert که داده های تست باشند.
.
.
.
به طور کلی جایی که بازه بین دو تاریخ مرخصی را محاسبه میکنید میتونید تعداد جمعه ها رو طبق همون لینک بدست بیارید و کم کنید.