Расчеты разницы во времени, где дата и время находятся в отдельных столбцах - PullRequest
0 голосов
/ 03 мая 2010

У меня есть запрос, в котором я пытаюсь получить продолжительность часов (например, 6,5 часов) между двумя разными периодами времени.

В моей базе данных время и дата хранятся в разных полях, поэтому я могу эффективно запрашивать только startDate или endDate, поскольку я никогда не запрашиваю конкретно время.

Мой запрос выглядит так

SELECT COUNT(*), IFNULL(SUM(TIMEDIFF(endTime,startTime)),0) FROM events WHERE user=18

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

Я пытался

SELECT COUNT(*), IFNULL(SUM(TIMEDIFF(CONCAT(endDate,' ',endTime),CONCAT(startDate,' ',startTime))),0) FROM events WHERE user=18

К сожалению, я получаю ошибки только тогда, когда делаю это, и я не могу объединить два поля в одну временную метку.

Ответы [ 2 ]

0 голосов
/ 03 мая 2010
TIMEDIFF(endDate,startDate) + TIMEDIFF(endTime,startTime)
0 голосов
/ 03 мая 2010

Уверен, ваша проблема в том, что ваши объединенные значения отправляются на TIMEDIFF() в виде строк, а не DATETIME. Попробуйте вызвать на них функцию DATETIME:

SELECT COUNT(*), IFNULL(SUM(TIMEDIFF(DATETIME(CONCAT(endDate,' ',endTime)),DATETIME(CONCAT(startDate,' ',startTime)))),0) FROM events WHERE user=18

У меня нет MySQL DB перед моей, чтобы проверить это, но я думаю, что это или какая-то похожая форма это то, что вы ищете. В документации по MySQL есть пример, включающий MICROSECOND:

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

Редактировать: Хмм ... похоже, что TIMEDIFF должен работать со строками. В любом случае, стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...