2010-04-16 2 views
2

Подробнее. У меня есть таблица заметок со следующими столбцами.Мне нужно рассчитать разницу между датой и временем между одной датой.

ID  - INT(3) 
Date  - DateTime 
Note  - VARCHAR(100) 
Tile  - Varchar(100) 
UserName - Varchar(100) 

Теперь эта таблица будет иметь ПРИМЕЧАНИЯ вместе с титрами, введенными UserName в указанную дату/время.

мне нужно вычислить DateTimeDifference между двумя рядами в той же колонке

Например, выше таблица имеет этот peice информации в таблице.

64, '2010-03-26 18:16:13', 'Action History', 'sending to Level 2.', 'Salman Khwaja' 
65, '2010-03-26 18:19:48', 'Assigned By', 'This is note one for the assignment of RF.', 'Salman Khwaja' 
66, '2010-03-27 19:19:48', 'Assigned By', 'This is note one for the assignment of CRF.', 'Salman Khwaja' 

Теперь мне нужно иметь следующий набор результатов в отчетах запросов с использованием MYSQL.

TASK    - TIME Taken 
ACTION History  - 2010-03-26 18:16:13 
Assigned By   - 00:03:35 
Assigned By   - 25:00:00 

Более умное подход будет

TASK    - TIME Taken 
ACTION History  - 2010-03-26 18:16:13 
Assigned By   - 3 minutes 35 seconds 
Assigned By   - 1 day, 1 hour. 

Я был бы признателен, если один может дать мне равнину QUERY вместе с PHP код, чтобы вставить его тоже.

ответ

1
<?php 
$start = new DateTime('2009-01-01 00:00:00'); // 31 days 
$time_span = $start->diff(new DateTime('2009-02-01 00:00:00')); 
var_dump($time_span); // returns '1 month' 

$start = new DateTime('2009-02-01 00:00:00'); //28 days 
$time_span = $start->diff(new DateTime('2009-03-01 00:00:01')); 
var_dump($time_span); // returns '1 month' 
?> 
+0

http://php.net/manual/en/datetime.diff.php – Svisstack

+0

спасибо, но я был бы признателен за MYSQL Query. – Stringz

0
+0

Я искал и нашел его, но я просто не могу реализовать его в запросе. Не могли бы вы помочь мне. Спасибо. – Stringz

+0

Что вы хотите, чтобы запрос возвращался? как выбрать две строки для сравнения дат? это просто сравнить дату следующей строки с предыдущей строкой? –

+0

Да. Мне нужно сравнить дату/время в одной колонке (CurrentDate) строки с одной по две. Сравните это и дайте разницу в удобочитаемой форме человека, которая составляет один день, 2 часа, 23 минуты. Подробнее см. Снимки. http://processmaker.wordpress.com/2010/04/20/query-issues/dump1/ http://processmaker.wordpress.com/2010/04/20/query-issues/ – Stringz

0

Похоже, что вы хотите, чтобы группы по делу №.

Использование схемы и примеры данных, я думаю, что это именно то, что вы хотите:

SELECT t1.ID, t1.title AS task, t1.username, 
    IFNULL(CONCAT(TIMESTAMPDIFF(MINUTE, t2.currentDate, t1.currentDate)), t1.currentdate) AS time_taken 
FROM tps_trans_support_notes t1 
LEFT JOIN tps_trans_support_notes t2 
    ON t2.currentdate < t1.currentdate AND 
    t2.ID <> t1.ID AND 
    t2.casenumber = t1.casenumber 
LEFT JOIN tps_trans_support_notes t3 
    ON t3.casenumber = t1.casenumber AND 
    t3.ID <> t1.ID AND t3.ID <> t2.ID AND 
    t3.currentdate > t2.currentdate AND 
    t3.currentdate < t1.currentdate 
WHERE t3.ID IS NULL AND 
    t1.casenumber = '21' 
ORDER BY t1.ID 

Во-первых, запрос получает время начала и время окончания в той же строке, за исключением строки, где Есть раз которые происходят между ними, тогда он отображает разницу.

Запрос показывает только разницу в минутах, но вы можете использовать другие функции DateTime, чтобы развернуть это.

+0

Спасибо Маркусу. Этот запрос работает как шарм. Но дело в том, что Этот запрос дает мне результат, сравнивая первый раз со всеми другими моментами (исключая курс, отфильтрованный по критерию, установленному в предложении ON). Разница во времени складывается с точки зрения сравнения первого запись (в качестве эталона), а остальная часть сравнивается с этой первой записью. Я хочу, чтобы интервал между двумя задачами. В моем примере выше сравните идентификатор 64 с 65, а затем 65 с 66. Снова , THANKYOU SO MUCH для решения.Я был бы признателен, если бы вы могли предоставить ответ на этот вопрос. – Stringz

+0

@Stringz, извините, я думал, что вы хотите, чтобы они были сгруппированы по пользователю, названию и заметке. Вам просто нужен набор результатов, упорядоченный столбцом Date? Вам все равно, что предыдущая строка предназначена для другого пользователя, заголовка или заметки? Кроме того, можно ли заменить столбец идентификатора столбцом Date? –

+0

@ Marcus. Я хочу, чтобы они были сгруппированы по User, Title и Note. Это хорошо, но сравнительная часть заключается в том, что мне нужен интервал между каждой датой/временем. Запрос, который вы предоставили, дает мне интервал от первого до второго, затем от первого до третьего и от первого до четвертого. Хотя мне нужно от первого до второго, от второго до третьего, третьего-четвертого, так далее и т. Д. Еще раз спасибо. – Stringz

Смежные вопросы