لینک کوتاه اشتراک گذاری
سلام دوستان من ی جدول دارم ب اسم purchase ک توی تصویر هست فیلد هاش حالا من میخوام اطلاعات رو اینتوری ازش بکشم بیرون اولین شرط اینه ک user_id های ک مساوی هم هستنتاریخ رو اینتوری توی دیتابیس ثبت کردم 1399-10-19 21:13
حالا میخوام ی شرط دیگ بزارم اطلاعاتی ک توی ماه دهم سال وارد شدن باشه
بعد اونایی ک این شرط هارو داشتن purchase_amount باهم جمع بشهمن این کد رو تا جایی ک user_id هایی ک یکسانن رو جمع کنه نوشتم ولی نمیدونم چطور این شرط رو برای تاریخ بنویسم
لینک کوتاه اشتراک گذاری
@muhammad
خب اگ من از whereMonth ک شمامیگی استفاده کنم چطور باید بفهمم این کدوم ماه شمسیه!؟
لینک کوتاه اشتراک گذاری
فکر میکنم که whereMonth بر اساس فرمت تاریخ کار میکنه، پس به احتمال خیلی زیاد جواب میده و روی بخش m از فرمت تاریخ کار میکنه.
ولی اگه میلادی ذخیره میکردید، تاریخ شمسی رو با یه پکیج میساختید و بعد تبدیل به میلادی میکردید و بر اساس اون کوئری میزدید.
لینک کوتاه اشتراک گذاری
میتونی به این شکل گروه بندی کنی:
->groupBy(DB::raw('substring_index(jdate,"-",2)')) // 1399-10
یا
->groupBy(DB::raw('substring_index(substring_index(jdate,'-',-2),'-',1)')) // 10
روش دوم:
اگر jdate با created_at یکی است میتونی ابتدا و انتهای ماه (1399-10-01 و 1399-10-30) رو به میلادی تبدیل کنی و جستجو را بر اساس تاریخ میلادی روی created_at انجام بدی
لینک کوتاه اشتراک گذاری
@roj ممنونم از راهنماییتون substring_index چیه؟ باید بجاش چی بزارم؟
لینک کوتاه اشتراک گذاری
substringindex یک تابع mysql است که یک قسمت از ستونی که بهش میدی و با توجه به جدا کاراکتر کننده برات استخراج میکنه. لازم نیست بجاش چیزی بگذاری. بهش سه تا پارامتر میدی
نام ستون
جدا کننده
دفعات جستجو جدا کننده