PDA

View Full Version : سوال: نحوه فیلتر کردن داده ها بر اساس تاریخ



scofield007
شنبه 20 شهریور 1395, 10:52 صبح
سلام دوستان عزیز.وقت بخیر

بنده سوالی داشتم. چطور امکانش هست که داده هایی که از سمت سرور میان رو بر اساس هفته و ماه فیلتر کنیم. مثلا مدیریت میخاد اطلاعاتی که در یک ماه اخیر ثبت شدند رو مشاهده کنه. چه طوری امکان فیلتر کردن مطالب دیتابیس فراهم میشه. این نکته رو عرض کنم زمان رو به صورت timestamp در دیتابیس ذخیره میکنم.

با تشکر

Unique
شنبه 20 شهریور 1395, 14:41 عصر
شما میتونید timestamp یک هفته پیش از تاریخ جاری یا ماه پیش یا هر تاریخی بخواهین را محاسبه و مقادیر بزرگتر از اون را توی query فیلتر کنین. مثلا اگه ۳۰ روز پیش از امروز را بخواین :

$ts = time() - (60 * 60 * 24 * 30);

اگه از ساعت صفر اون روز را بخواین :

$midnight_ts = strtotime(date("Y-m-d 00:00:00",$ts));

در واقع باید با زمان بازی کنید و روزی که میخواین را timestamp ش را در بیارین و توی query توی where محدود کنید یا به قول خودتون فیلتر کنید.

scofield007
یک شنبه 21 شهریور 1395, 00:27 صبح
ممنونم دوست عزیز

saeedvir
یک شنبه 21 شهریور 1395, 04:28 صبح
من بیشتر مواقع تاریخ رو به صورت 13950621 ذخیره می کنم ، بعد خیلی راحت می تونم داده ها رو مرتب سازی یا فیلتر کنم.

Unique
یک شنبه 21 شهریور 1395, 09:30 صبح
من بیشتر مواقع تاریخ رو به صورت 13950621 ذخیره می کنم

این روش خیلی قدیمیه و تقریبا منسوخ شده. خود من توی پروژه های قدیمیم دقیقا از همین شیوه استفاده میکردم و مشکل خیلی حادی هم نداشتم. حتی زمان را هم میشه در ادامش به صورت ۲۴ ساعتی نمایش داد. اما خیلی مواقع هست که نیاز میشه از خود MySQL و توابع تاریخش برای داشتن سرعت بیشتر روی Query و عدم محاسبه سمت PHP استفاده کنیم که در این مواقع به مشکل میخورین. مثلا فکر کنین میخواین Query بنویسین که روی این فیلد تاریخ ، رکورد هایی که روز شنبه هست را حذف کنید. شما بدون محاسبه سمت PHP و یک پروسه سنگین به هیچ وجه نمیتونید چنین کاری را با این نوع ذخیره تاریخ انجام بدین. البته این یک مثال بود و مثال های بیشتر و کاربردی تری هم میشه زد.

من خودم تاریخ را Date و Datetime به صورت میلادی و GMT ذخیره میکنم که هر بلایی خواستم سرش بیارم اما ذخیره به صورت Timestamp هم متداول هست و طرفدار های خودش را داره. که این دو روش نسبت به روش شما ترجیح داده میشه.