Вот мой стол:Как классифицировать временную метку?
+----+-----------------+
| id | timestamp |
+----+-----------------+
| 1 | 1452001861 | -- yesterday
| 2 | 1452088272 | -- today
| 3 | 1452088283 | -- today
| 4 | 1451915461 | -- last week
| 5 | 1452001861 | -- yesterday
| 6 | 1452088263 | -- today
| 7 | 1252388263 | -- out of {today, yesterday, last week}
| 8 | 1452088312 | -- today
| 9 | 1452001762 | -- yesterday
| 10 | 1222388263 | -- out of {today, yesterday, last week}
| 12 | 1451915459 | -- last week
+----+-----------------+
Теперь я хочу, чтобы выбрать, как это:
+----+-----------------+---------------+
| id | timestamp | range |
+----+-----------------+---------------+
| 1 | 1452001861 | yesterday |
| 2 | 1452088272 | today |
| 3 | 1452088283 | today |
| 4 | 1451915461 | last week |
| 5 | 1452001861 | yesterday |
| 6 | 1452088263 | today |
| 7 | 1252388263 | out |
| 8 | 1452088312 | today |
| 9 | 1452001762 | yesterday |
| 10 | 1222388263 | out |
| 12 | 1451915459 | last week |
+----+-----------------+---------------+
// ^this column isn't a real column
Ну, все, что я могу сделать, это выбрать только сегодня:
SELECT
id,
date_time
FROM
viewed
WHERE
DATE_FORMAT(FROM_UNIXTIME(`date_time`), '%Y-%m-%d') >= (DATE_FORMAT(NOW(), '%y-%m-%d') - INTERVAL 1 DAY)
В I said, Этот запрос^выбирает только сегодняшние отметки времени.
Мой вопрос: Теперь я хочу знать, как я могу расширить мой запрос к {сегодня, вчера - на прошлой неделе}?
Я не думаю, что есть встроенный в классификации «Сегодня», «Вчера», «На прошлой неделе» в MySQL. Все, что вы могли сделать, это рассчитать дни с сегодняшнего дня (что-то вроде 'DATEDiFF (CURDATE(), timestamp) AS daysSinceToday'), а затем ваш PHP-скрипт классифицирует его (' if ($ daysSinceToday == 0) // today // elseif ($ daysSinceToday == 1) // вчера // elseif ($ daysSinceToday> 7) // Последние 7 дней // '). Когда вы хотите распечатать их, как на SO, тогда вам также придется сначала их заказать MySQL. –