| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Выборка за несколько часов |
| Автор: s1lver 6.11.2015, 08:19 | ||||
| Доброго времени суток! Подскажите пожалуйста, что-то я в затруднении. Необходимо выбрать записи за последние несколько часов. Беру, к примеру, 4 часа:
Запрос на небольшом количестве данных, работает отлично. Но стоит подсунуть, к примеру ~600 000 записей, то ищет вовсе не последние 4 часа (добавляет еще 3 часа или не добирает 1 час). Аналогично работает и такой запрос:
|
| Автор: Akina 6.11.2015, 08:55 |
| Не верю. Покажите DDL. |
| Автор: s1lver 6.11.2015, 09:03 | ||||||
Выбраны в итоге все записи, начиная, по времени, от последней за сегодня, до первой за сегодня. Т.е: 2015-11-06 01:59:50 2015-11-06 02:59:11 2015-11-06 03:58:18 2015-11-06 04:57:12 2015-11-06 05:51:42 2015-11-06 06:53:23 2015-11-06 07:59:26 2015-11-06 08:30:04 Забыл упомянуть, что meta(enum), time(datetime) и на оба поля созданы индексы.
|
| Автор: tzirechnoy 6.11.2015, 09:59 |
| http://en.wikipedia.org/wiki/DDL, первая ссылка. |
| Автор: Akina 6.11.2015, 10:12 | ||
Не верю!
Цитату с консоли в студию. И DDL всё-таки. |
| Автор: s1lver 6.11.2015, 10:56 | ||||||
Так я же ее привел, вместе с DDL. Для 'BLR' при запросе
получаю
Время: sql> SELECT NOW() FROM units [2015-11-06 13:00:44] 500 rows retrieved starting from 1 in 385ms (execution: 352ms, fetching: 33ms) 2015-11-06 08:58:31 Время сервера: Fri Nov 6 08:58:58 CET 2015 |
| Автор: Akina 6.11.2015, 11:00 |
Вы привели некие вырезки. Дайте полный необрезанный листинг, такой, как у меня. Есссно уменьшите интервал, чтобы записей поменьше было - одного-двух часов достаточно. И не забудьте SELECT NOW(). Добавлено через 1 минуту и 39 секунд Хотя по тому, что я вижу - хочется предположить, что имеет место проблема с зоной времени (явно откуда-то плывёт девиация в 2 часа). |
| Автор: s1lver 6.11.2015, 11:29 | ||||
|
| Автор: Akina 6.11.2015, 12:06 |
| Текущее время, если верить цитате консоли, 2015-11-06 09:25:33. С учётом этого в соответствии с текстом запроса должны возвращаться все записи, в которых дата-время не ранее 2015-11-06 03:25:33. Все процитированные записи этому условию соответствуют. В чём проблема? |
| Автор: s1lver 6.11.2015, 12:16 | ||||
Кажется я где туплю очень сильно. Мне необходимо получить записи за последние 6 часов. А получаю за 8 или 9. Т.е, если 2015-11-06 09:25:33, минимальное полученное время должно быть 2015-11-06 04:25:33. Соответственно, полагаю, что если время 2015-11-06 03:25:33, то минимальное время 2015-11-05 22:25:33 Так, можно, в принципе так поступить:
|
| Автор: s1lver 6.11.2015, 14:03 | ||
Так мне же и надо, от текущего времени отнять, допустим, 6 часов. И вот этот промежуток времени получить. Т.е промежуток в 6 часов от текущего времени. Получается, второе решение то, что надо |