Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос : разность дат 
V
    Опции темы
Veve
Дата 5.1.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



В MySQL существует следующая таблица
id           int(11)
date         datetime


Нужно создать следующий запрос:
В первом столбце дата, а во втором разность между датой из следующей строки и датой в первом столбце
PM MAIL ICQ Skype MSN   Вверх
Dremlin
Дата 5.1.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Quo vadis?
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 21.9.2006
Где: Киев

Репутация: нет
Всего: 4



Код

SELECT a.id, a.date, b.id, b.date, a.date - b.date AS datediff
FROM Table AS a join Table AS b on a.id + 1 = b.id

--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются...
PM MAIL   Вверх
Veve
Дата 5.1.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



Спасибо smile 
PM MAIL ICQ Skype MSN   Вверх
DENNN
Дата 5.1.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Dremlin
и где интересно написано, что нумерация id непрерывна?
PM ICQ   Вверх
Veve
Дата 5.1.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



А кстати, а чё делать, если нужно отнять от следующей даты по возрастанию... у неё может быть любой ID?

Это сообщение отредактировал(а) Veve - 5.1.2007, 18:45
PM MAIL ICQ Skype MSN   Вверх
DENNN
Дата 6.1.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Veve
в терминах БД нет, никогда не было и не будет понятия "следующая строка". БД - это источник данных, а не таблица, в которой строки хранятся одна за другой. Условия по сортировки записей ты должен придумывать сам и в алгоритме предусмотреть тоже сам. 
Если ты говоришь, что ID идут непрерывным числовым рядом увеличиваясь на единицу, тогда пример 
Dremlinа тебе подходит. Если нужно отсортировать по ID или дате, то можно придумать варианты с временной таблицей, либо добавлять еще одно поле.
PM ICQ   Вверх
skyboy
Дата 6.1.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Код

SELECT table1.id1, (table2.`date` - table1.date1)  as date_difference
FROM (
           SELECT t1.id as id1 t1.`date` as date1,min( t2.id) as id2
           FROM `table` t1
           INNER JOIN `table` t2 
           WHERE t2.id> t1.id 
           GROUP t1.id, t1.`date`
          ) table1
INNER JOIN `table` table2
ON table2.id = table1.id2


PM MAIL   Вверх
DENNN
Дата 7.1.2007, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



skyboy
автор поста нигде не писал, что сортировка должна идти по полю ID. Он написал 

Цитата(Veve @  5.1.2007,  16:03 Найти цитируемый пост)
между датой из следующей строки и датой в первом столбце 

Понимай как хочешь....
PM ICQ   Вверх
skyboy
Дата 7.1.2007, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(DENNN @  7.1.2007,  00:56 Найти цитируемый пост)
skyboy, 
автор поста нигде не писал, что сортировка должна идти по полю ID. Он написал 

укоряешь за попытку догадаться?  smile 
PM MAIL   Вверх
DENNN
Дата 8.1.2007, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



skyboy, все еще надеюсь, что парень сядет и продумает свой вопрос до конца - глядишь и вопрос несколько изменится ))
PM ICQ   Вверх
Veve
Дата 8.1.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



Да, прошу прощения. Вопрос получился действительно не коректным. Просто хотел как можно проще описать задачу и сам немного запутолся.
Суть следующая:
Есть таблица с датой, причём дата расположена в разном порядке (не отсортирована). 
Нужно создать запрос: столбец с датой (как и в таблице) и столбец с разностью дат.
Допустем имеються даты
2006-05-08 12:00:00
2005-05-08 13:00:00
2006-05-08 14:00:00
Таблица после запроса должна быть примерно такой
2006-05-08 12:00:00 \  (2006-05-08 14:00:00) - (2006-05-08 12:00:00)
2005-05-08 13:00:00 \  (2006-05-08 12:00:00) - (2005-05-08 13:00:00)
2006-05-08 14:00:00 \   нет следующей даты.
Разность даты должна выводиться в виде столькото дней и столькото времени....
Вроде так....
PM MAIL ICQ Skype MSN   Вверх
skyboy
Дата 8.1.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Veve, мой запрос не работает?
PM MAIL   Вверх
DENNN
Дата 8.1.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата(Veve @  8.1.2007,  14:19 Найти цитируемый пост)
Нужно создать запрос: столбец с датой (как и в таблице) и столбец с разностью дат.

В этом случае нужно указать условие как сортировать строки иначе в разные моменты времени/на разных базах/на разных версиях/на разных движках/при разной логике результаты могут отличаться.
Еще раз повторяю: в терминах баз данных данные не хранаятся построчно. БД - это лишь просто некое хранилище информации. Никто не обещает, что завтра на select * from table where 1=1; данные будут выданы в том же порядке, как были добавлены.
PM ICQ   Вверх
Veve
Дата 10.1.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 3
Всего: 13



skyboy, спасибо работает! Всё ОК!  smile 
PM MAIL ICQ Skype MSN   Вверх
Архипов
Дата 9.4.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



Код

+---------------------+---------------------+-----------------+
| time1               | time2               | alltime         |
+---------------------+---------------------+-----------------+
| 2007-03-01 01:34:06 | 2007-03-01 03:58:31 |    22425.000000 |
| 2007-03-01 01:34:04 | 2007-03-01 03:18:09 |    18405.000000 |
| 2007-03-01 01:24:57 | 2007-03-01 04:43:06 |    31849.000000 |
| 2007-03-01 02:55:04 | 2007-03-01 03:18:40 |     6336.000000 |
| 2007-03-01 00:33:52 | 2007-03-01 04:42:16 |    40864.000000 |
| 2007-03-01 01:15:46 | 2007-03-01 04:43:09 |    32763.000000 |
| 2007-03-01 05:16:10 | 2007-03-22 09:32:49 | 21041639.000000 |
| 2007-03-01 02:44:27 | 2007-03-22 09:12:41 | 21066814.000000 |
| 2007-03-01 22:19:57 | 2007-03-02 05:29:35 |   830978.000000 |
| 2007-03-01 21:49:57 | 2007-03-04 17:12:06 |  2956249.000000 |
+---------------------+---------------------+-----------------+



 alltime- разница time2-time1

вопрос, можно ли как нибудь alltime привести в читабельный вид?????

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1167 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.