محاسبه روزهای بین 2 تاریخ در Sql Server
سلام دوستان
یک سوال داشتم برای نوشتن یک کویری.
فرض کنید کارمندی در یک شرکت از تاریخ
1398/12/25
تا تاریخ
1399/01/05
به مرخصی رفته و این مرخصی در سیستم ثبت شده.
تاریخ شروع مرخصی در فیلد StartDate و تاریخ پایان مرخصی در فیلد EndDate ثبت شده.
حالا من میخوام یک کویری بنویسم که مجموع مرخصی های این کاربر رو در سال 98 نمایش بده
Select * From Leave_Tbl Where StartDate => '1398/01/01' And EndDate <= '1398/12/29'
البته تاریخ ها در دیتابیس به صورت میلادی هستن و برای فهم بهتر مطلب اینجا شمسی نوشتم.
الان در کویری بالا مرخصی کاربر که در بالا بهش اشاره کردم در شرط نمایش داده نمیشه چون تاریخ پایان مرخصی در شرط صحیح نیست و به عبارتی مرخصی کاربر رو 0 محاسبه میکنه در حالی که کاربر در سال 98 مدت 5 روز مرخصی داشته. کویری رو چجوری بنویسم که بشه این مدت مرخصی رو محاسبه کرد؟
سلام
بهتر بود برای این سوال تاریخ ها رو به صورت میلادی می نوشتید چون تمامی عملگرهای sql Server بر روی تاریخ میلادی تعریف شدن. برای محاسبه تعداد روزهای خاص موجود در یک بازه خاص می تونید از این روش استفاده کنید.
select t.*,
Sum(datediff(day,
case when startdate < '2020-02-08' then '2020-02-08' else startdate end),
case when enddate > '2020-02-12' then '2020-02-12' else startdate end)
) + 1) As myColumn
from t;
در کوئری بالا از تابع DateDiff در Sql Server استفاده شده.
حال فرض کنید کارمند شما از تاریخ 2020-02-15 تا تاریخ 2020-02-24 به مرخصی رفته است. و شما میخواید بدونید که بین بازه 2020-02-08 تا 2020-02-12 چه تعداد روز مرخصی داشته است. که به راحتی با اسنفاده از کوئری بالا می تونید این مقدار را محاسبه کنید
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )