Я хочу получить данные, наиболее близкие к определенной дате, в прошлом или будущем, в зависимости от того, что ближе к дате. Но мне также нужно, чтобы оно было distinct
по type
. Например:
id |type |data | date
1 |0 |1904 |2018-08-19 00:14:32
2 |0 |1904 |2018-08-19 00:24:47
3 |0 |1904 |2018-08-19 05:02:30
4 |0 |1904 |2018-08-22 00:05:58
5 |0 |1904 |2018-08-22 00:08:34
6 |4 |1903 |2018-08-19 00:14:31
7 |6 |1926 |2018-08-19 00:14:32
8 |6 |1926 |2018-08-19 04:44:10
9 |6 |1926 |2018-08-19 04:52:58
10 |6 |1926 |2018-08-19 04:59:23
11 |6 |1926 |2018-08-22 00:05:58
12 |6 |1926 |2018-08-22 00:07:52
13 |6 |1926 |2018-08-22 00:08:34
14 |7 |1564 |2018-08-19 00:14:32
15 |8 |1900 |2018-08-19 00:14:32
Если я укажу дату и время: 2018-08-19 00:00:00
. Я должен получить следующие результаты:
id | type
1 | 0
6 | 4
7 | 6
14 | 7
15 | 8
Или, если я укажу дату и время: 2018-09-03 00:00:00
. Я ожидаю:
id | type
5 | 0
6 | 4
13 | 6
14 | 7
15 | 8
Или, наконец: 2018-08-22 00:05:58
.
id | type
4 | 0
6 | 4
11 | 6
14 | 7
15 | 8
Я пробовал несколько запросов, которые на самом деле не имели смысла ... Например:
SELECT *
FROM history
WHERE (ABS(TIMESTAMPDIFF(DAY, date, "2018-08-19 00:08:34")) < 4) AND user_id = 1299
GROUP BY type
ORDER BY date
В любом случае, возможно ли это только с помощью запроса MySQL? Нужно ли использовать какую-то логику приложения для этого? Как мне запросить это?
SQL скрипка