даты в строгой последовательности mysql

285
12 июня 2017, 21:16

Есть таблица. в ней поле даты. в неё производятся записи каждый день. Подскажите как сделать запрос на проверку каждый ли день была запись? допустим есть ли данные за 4 дня?

Пример:

Есть записи для дат:

2017-06-06 ...
2017-06-07 ...
2017-06-09 ...

Как мне определить что 8 числа записи нет?

Answer 1

Приведу пример на MySQL.
Посоветую вам сделать соединение таблицы саму с собой.

Например, вы хотите посмотреть данные за прошедшую неделю и увидеть, сколько дней (и в какие дни) не были записи. Один из вариантов - left join:

select t1.date - interval 1 day
from test t1 left join test t2 on t1.date = t2.date + interval 1 day
where t2.date is null

Пример на sqlfiddle. Запрос выведет даты, если отсутствовало по 1 дню за раз.

В идеале вам для таких случаев иметь таблицу, где будут все дни и соединять с ней.

С помощью такого запроса увидите даты, между которыми были пропуски, но без вывода этих пустых дат:

select t.date,
  (select max(t1.date) from test t1 where t1.date < t.date) as last_date,
  t.date - (select max(t1.date) from test t1 where t1.date < t.date) as period
from test t
having period > 1
READ ALSO
Не получается соединить два поля из таблиц БД

Не получается соединить два поля из таблиц БД

Дурацкий вопрос наверное, но не могу соединить два поляНе понимаю, почему возникает ошибка

242
После removeView не очищается оперативка

После removeView не очищается оперативка

программно добавляю элемент

165
Утечка памяти java

Утечка памяти java

Добрый день! Подскажите пожалуйста почему происходит бесконечная утечка памяти при таких действияхВ методе OnCreate создаю объекты

199
Получить данные из адресной строки

Получить данные из адресной строки

Мне нужно получить данные из адресной строкиК примеру после обращения к серверу я получаю данные в виде: http://test

466