|
|
|
|
|
для: u-nick
(22.10.2005 в 14:36)
| | нет, наверное придётся скармливать всё выражение, т.е. писать MAX(FROM_UNIXTIME(UNIX_TIMESTAMP(Ended) - UNIX_TIMESTAMP(Came)) и тоже самое с AVG(). | |
|
|
|
|
|
|
|
для: u-nick
(22.10.2005 в 14:06)
| | А можно ещё тебя помучить?
Как сделать сумму и среднее значение столбца 'Lasting'?
1. sum(Lasting) и avg(Lasting) - не подходят
Более того, 2. 'from_unixtime(sum(Lasting), "%i:%s") as Total_time'
и 'from_unixtime(avg(Lasting), "%i:%s") as Avg_time тоже не подходят, т.к. суммирование Lasting происходит как-то странно (получается всего 180 в первом случае и 3:00 во втором, когда должно получиться 251 минут). | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 13:53)
| | ГЕНИАЛЬНО!!!!!!!!!!!!!!!!!!!!!!!!!
Спасибо огромное!!! | |
|
|
|
|
|
|
|
для: u-nick
(22.10.2005 в 13:41)
| | Давайте ещё одну попытку произведём
SELECT Came, Ended, FROM_UNIXTIME(UNIX_TIMESTAMP(Ended) - UNIX_TIMESTAMP(Came), "%i:%s") as Lasting FROM Login_4012
|
Хотя мне уже эта гроздь функций не по душе :))) | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 13:39)
| | Посмотри, пожалуйста, ещё раз предыдущюю мою запись я её немного изменил во время твоего ответа. | |
|
|
|
|
|
|
|
для: u-nick
(22.10.2005 в 13:34)
| | Ну, помоему, то что нужно... А в смысле на две части? | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 13:29)
| | Вот что получилось:
+---------------------+---------------------+---------+
| Came | Ended | Lasting |
+---------------------+---------------------+---------+
| 2005-10-21 10:04:13 | 2005-10-21 10:04:31 | 00:18 |
| 2005-10-21 10:04:32 | 2005-10-21 10:05:02 | 01:10 |
| 2005-10-21 10:05:06 | 2005-10-21 10:05:40 | 00:34 |
| 2005-10-21 10:05:41 | 2005-10-21 10:05:56 | 00:15 |
| 2005-10-21 10:05:55 | 2005-10-21 10:06:24 | 01:09 |
| 2005-10-21 10:06:37 | 2005-10-21 10:07:50 | 01:53 |
| 2005-10-21 10:08:06 | 2005-10-21 10:08:20 | 00:14 |
+---------------------+---------------------+---------+
при построчном вычитании 502-432=70 -> 1:10 (вторая строка). В реальности должно получиться просто 00:30
Не понимаю, почему в SQL не продумали такую элементарную вешь!
А PHP я вообще не знаю (по крайней мере пока).
Может ещё какие идеи появятся? | |
|
|
|
|
|
|
|
для: u-nick
(22.10.2005 в 13:05)
| | Скорее всего придётся средствами PHP реализовывать эту задачу, хотя посмотрите этот запрос
select Came, Ended, FROM_UNIXTIME(Ended - Came, "%i:%s") as Lasting from Login_4012
|
| |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 13:00)
| | И как же мне тогда вообще получить разницу во времени???
Мне это необходимо очень часто | |
|
|
|
|
|
|
|
для: u-nick
(22.10.2005 в 12:52)
| | Вообще говоря использовать time() здесь наверное не очень корректно, он ведь принимает в качестве аргумента дату и время суток, а возвращает время суток, в противном случае результат не предсказуем (очень многие функции MySQL возвращают непредсказуемый результат при некорректных начальных значениях)
mysql> SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'
mysql> SELECT TIME('2003-12-31 01:02:03.000123');
-> '01:02:03.000123'
|
Он же и по другим значениям врёт 113 секунд это никак не 1:13... Он будет врать для всего, что больше минуты, так как временной тип хранится в строке, а разница возвращается в секундах... Т.е. допустим 1256 секунд он запишет как 12:56 и т.д. | |
|
|
|
|