Mam tabeli jak poniżej:datę Klasyfikowanie jako "wczoraj", "ostatniego tygodnia", etc
// mytable
+----+------------+
| id | date_time |
+----+------------+
| 1 | 1464136759 | -- 5 days ago
| 2 | 1464436759 | -- 2 days ago
| 3 | 1464538248 | -- 6 hours ago
+----+------------+
-- ^these are based on current time which is 1464561158
Również mam tej kwerendy:
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
A oto prąd wyjściowy:
+----+---------------+
| id | range |
+----+---------------+
| 1 | in last month |
| 2 | in last month |
| 3 | yesterday |
+----+---------------+
Jak widzisz moje pytanie wybiera wszystkie te błędne czasy uniksowe. Dlaczego i jak mogę to naprawić?
Oto oczekiwany wynik:
+----+--------------+
| id | range |
+----+--------------+
| 1 | in last week |
| 2 | yesterday |
| 3 | today |
+----+--------------+
Twój kod działa (tak jak jest) w Fiddle SQL: http://www.sqlfiddle.com/#!9/e63fd/3. Kod jest nieprawidłowy z powodu trzeciego warunku, ale generuje oczekiwany wynik. –
Znacznik czasu ma znaczenie tylko do i do daty DATE, co prawdopodobnie nie jest zbyt interesujące. Usuń go z pytania, aby uzyskać wyjaśniony problem/zakres. – user2864740
@ user2864740 Nie rozumiem, co masz na myśli .. –