طبقه بندی تاریخ به «دیروز»، «هفته پیش» و .. در MySQL
https://lamtakam.com/qanda/4209/طبقه-بندی-تاریخ-به-دیروز،-هفته-پیش-و---در-MySQL 2خب دوستان یک سوال دارم راجع به group کردن سطر ها مبنی بر تاریخ (timestamp) به دیروز، هفته پیش، ماه پیش و ...
جدولی که دارم به صورت ساده شده یک همچین چیزی میشه:
// mytable
+----+------------+
| id | date_time |
+----+------------+
| 1 | 1464136759 | -- 5 days ago
| 2 | 1464436759 | -- 2 days ago
| 3 | 1464538248 | -- 6 hours ago
+----+------------+
مقادیر 5 و 2 روز پیش یا 6 ساعت پیش اینا از لحظه فعلی حساب شده.
کوئری که نوشتم به این صورته:
SELECT id, CASE DATE(FROM_UNIXTIME(date_time))
WHEN CURDATE() THEN 'today'
WHEN CURDATE() - INTERVAL 1 DAY THEN 'yesterday'
WHEN CURDATE() - INTERVAL 7 DAY THEN 'in last week'
ELSE 'in last month or more'
END range
FROM mytable
WHERE 1
که خروجیش میشه این:
+----+---------------+
| id | range |
+----+---------------+
| 1 | in last month |
| 2 | in last month |
| 3 | yesterday |
+----+---------------+
همونطور که میبینید خروجی کلا اشتباه محاسبه میشه و تاریخ ها درست تبدیل نشدن. چیزی که مد نظرم هست اینه و باید خروجی به این شکل باشه:
+----+--------------+
| id | range |
+----+--------------+
| 1 | in last week |
| 2 | yesterday |
| 3 | today |
+----+--------------+
ممنون میشم راهنمایی کنید چطوری میتونم کوئریم رو تغییر بدم که همچین خروجی بگیرم؟