В MySQL у меня есть таблица с несколькими столбцами, одна из которых является столбцом даты. Я хочу иметь возможность сделать запрос, чтобы я мог получить дополнительный столбец, показывающий количество дней между текущей датой (датой каждой строки) и датой предыдущей строки.Как получить количество дней между последовательными записями в таблице?
Порядок записей по дате, и я фильтрую другой столбец.
например.
id other_col date days_between_dates
1 abc 2013-05-01 0
2 abc 2013-05-07 6
3 abc 2013-05-09 2
4 abc 2013-05-19 10
5 abc 2013-05-25 6
6 abc 2013-06-03 9
7 abc 2013-06-14 11
Очевидно, так как первая строка не имеет ничего, чтобы сравнить с, он должен показать 0
.
Я знаю, что могу получить разницу между двумя датами с помощью функции MySQL datediff
.
select datediff('2013-06-03','2013-05-25');
Мой основной запрос select * from mytable where other_col = 'something' order by date;
, но как я могу сделать запрос непосредственно получить результат, как в примере? (Мне нужна дополнительная колонка «days_between_dates
»).
Также обратите внимание, что обычно идентификаторы упорядочены и без пробелов, но я не могу этого гарантировать. только то, что я буду сортировать по восходящей дате и фильтровать столбец «other_col».
Являются ли идентификаторы в таблице гарантированно последовательными (т. Е. Они являются значениями автоинкремента, и вы никогда не удаляете строки или не изменяете значение автоинкремента)? –
Да, они секвенциальны, но я не знаю, можно ли их удалить, создав таким образом «пробелы» в идентификаторах. В идеале (и во всех случаях, которые я видел) идентификаторы всегда последовательны и без пробелов, но, возможно, не всегда. Для этого случая давайте предположим, что они действительно последовательны. – DiegoDD