PDA

View Full Version : سوال: نحوه Group کردن Timestamp برحسب ماه شمسی



IR_Designer
سه شنبه 24 اردیبهشت 1392, 11:32 صبح
با سلام
خدمت دوستان برنامه نویس

چطور میشه اطلاعات دیتابیس رو برحسب ماه شمسی Group کرد در حالتی که زمان بصورت Timestamp ذخیره شده ؟
زبان برنامه نویسی PHP هست .
بطور مثال من میخوام رکورد های 12 ماه گذشته رو یه جا داشته باشم .

تا اونجایی که دنبالش بودم ، باید قبل از Query محاسبه بشه . ولی چطور رو پیدا نکردم .

مثال : (خروجی درآمد طی 6 ماه گذشته با یک Query)
1-92 : 2000
2-92 : 5500
3-92 : 6500
4-92 : 4522
5-92 : 1355
6-92 : 1300

ممنون

MMSHFE
سه شنبه 24 اردیبهشت 1392, 11:57 صبح
با JDF (http://jdf.scr.ir) و با کمک تابع jstrftime تاریخ شروع و پایان 12 ماه گذشته رو تبدیل به TimeStamp کنید (قبلش با date_default_timezone_set زمان ایران رو انتخاب کنید) و رکوردهایی رو استخراج کنید که Timestamp اونها بین این دو عدد باشه (با عملگر BETWEEN)

IR_Designer
سه شنبه 24 اردیبهشت 1392, 12:08 عصر
از JDF استفاده میکنم ، ممکن هست یه مثال بزنید ؟

MMSHFE
سه شنبه 24 اردیبهشت 1392, 13:35 عصر
توی سایتش نمونه کد و مثال گذاشته.

IR_Designer
سه شنبه 24 اردیبهشت 1392, 18:22 عصر
عذر میخوام ، فکر میکنم سوال بنده رو اشتباه متوجه شدید .
مشکل من تبدیل تاریخ های خاص نیست ، مشکل Group کردن داده ها بر حسب ماه شمسی است .
بطور مثال داده های فروش مربوط به یک سال اخیر در دیتابیس ذخیره شده و زمان ها نیز بصورت Unix Timestamp وجود دارد . خروجی مد نظر مجموع میزان فروش برحسب هرماه شمسی است که خروجی باید میزان مجموع هر ماه را نمایش بدهد.
خروجی مثال :

1-92 : 2000
2-92 : 5500
3-92 : 6500
4-92 : 4522
5-92 : 1355
6-92 : 1300

توی JDF هم دنبالش گشتم ، چیزی نبود .

MMSHFE
سه شنبه 24 اردیبهشت 1392, 20:08 عصر
چون تاریخهای شمسی توی SQL شناخته شده نیست، باید همونطور که گفتم، تاریخ شروع و پایان هر ماه رو بصورت TimeStamp محاسبه کنید و رکوردهای بین اون دو Timestamp رو استخراج کنید و کارهای لازم رو روی اونها انجام بدین (مثل مجموع و تعداد و...) و ضمناً برای هر ماه باید جداگانه انجام بدین.

IR_Designer
سه شنبه 24 اردیبهشت 1392, 21:13 عصر
ممنون از راهنماییتون ، یعنی با این اوصاف باید برای هر ماه شمسی یک Query جداگانه تعریف و اجرا بشه ؟

MMSHFE
سه شنبه 24 اردیبهشت 1392, 23:12 عصر
بله دقیقاً. البته میتونید همه کوئریها رو با هم با UNION ترکیب کنید و یک Result بزرگ بسازین.

IR_Designer
چهارشنبه 25 اردیبهشت 1392, 13:23 عصر
کار اصولی نیست ، دارم یه اسکریپت مینویسم برای تبدیل تاریخ های شمسی و اضافه کردن به column جدید و LEFT کردن زمان و درنهایت Group کردنشون .