PDA

View Full Version : سوال: گرفتن خروجی بر اساس بازه زمانی



newmusic
دوشنبه 09 تیر 1393, 13:54 عصر
من با time() تاریخم رو توی دیتابیس(mysql ) ثبت کردم به صورت خودکاره

حالا مطالبی که نیاز دارم میخوام بر اساس ماه خروجی بده

ساختار دیتابیس


lasttime
contant
user-id


1400422564
توضیحات
5874



میخوام به این شکل خروجی داشته باشم( تعداد مطالب که در دیتابیس ثبت شده براساس ماه)



فروردین
اردیبهشت
خرداد
مرداد
شهریور
مهر


5
5
8
5
4
2

Unique
دوشنبه 09 تیر 1393, 16:18 عصر
جناب آقای محمد صالح سوزنچی (http://saleh.soozanchi.ir/) زحمت کشیدند و توابع بسیار مفیدی برای mysql جهت تبدیل تاریخ از میلادی به شمسی داده اند که این کار را به شدت برای چنین خروجی هایی ساده میکنه ، من خودم از این توابع استفاده نکردم اما توصیه میکنم که ازشون استفاده کنین. میتونید از اینجا (https://github.com/zoghal/Presian-Date-for-MySQL) به کل اطلاعات پروژشون دسترسی داشته باشین.

راه حل برای php اینه که از جدول یک خروجی با ترتیب صعودی بر اساس lasttime بگیرید و با کتابخونه jdf ماه هر تاریخ را بدست بیارین و تعداد را محاسبه کنید ! اما روش بالایی اصلا یه چیز دیگست و از نظر performance قابل مقایسه نیستند. برای بهبود performance در این روش اگه ماه های هر سال جداگانه نمایش داده بشوند مقادیر هر ماه را cache میکنند تا در محاسبات آتی مقادیر جدید محاسبه بشوند !

اما بنده اگه توی پروژه ای بخوام این کار را انجام بدهم و از روش اول استفاده نکنم از یک فیلد (8)char استفاده میکنم و علاوه بر timestamp تاریخ را به فرمت مثلا امروز 13930409 ذخیره میکنم ! اونوقت برای نمایش تعداد در هر ماه داریم :


select count(*) total,left(p_date) from posts group by left(p_date,6) order by left(p_date,6)

کلا کار با تاریخ ها توی php و mysql کلا همه زبان ها کمی تسلط و تجربه نیاز داره. امیدوارم متوجه شده باشید.