Вопрос по FROM_UNIXTIME, UNIX_TIMESTAMP

SPavel_74100

Новичок
Вопрос по FROM_UNIXTIME, UNIX_TIMESTAMP

PHP:
SELECT FROM_UNIXTIME( (
UNIX_TIMESTAMP( DATE_ADD( now( ) , INTERVAL 15 HOUR ) ) - UNIX_TIMESTAMP( now( ) ) ) , '%h:%i:%s'
) AS remained
Пытаюсь посчитать разницу между датами в часах, минутах, секундах. этот результат выводит 03:00:00,
разобрался почему 3 а не 15, т.к считает часы до и после полудня.

Не могу понять как сделать нормальную разницу, даже если разница в 35 часов 26 мин 01 сек, нужен ответ 35:26:01

реальный запрос выглядит так
PHP:
select ud.datedoc,ud.periodwatch,
  FROM_UNIXTIME((UNIX_TIMESTAMP(DATE_ADD(ud.datedoc, INTERVAL ud.periodwatch HOUR )) - UNIX_TIMESTAMP(now())), '%h:%i:%s') as remained
  from `userauctiondoc` ud
 

Фанат

oncle terrible
Команда форума
а зачем здесь вообще эти преобразования - from, to?
похоже на переливание из пустого в порожнее
 

pilot911

Новичок
FROM_UNIXTIME покажет лишь соответствие секунд конкретному времени суток

разницу надо делать так:

[sql]
SELECT SEC_TO_TIME((UNIX_TIMESTAMP(DATE_ADD(ud.datedoc, INTERVAL ud.periodwatch HOUR )) - UNIX_TIMESTAMP(now()))) AS remained FROM `userauctiondoc` ud

[/sql]
 

SPavel_74100

Новичок
Автор оригинала: pilot911
FROM_UNIXTIME покажет лишь соответствие секунд конкретному времени суток

разницу надо делать так:

[sql]
SELECT SEC_TO_TIME((UNIX_TIMESTAMP(DATE_ADD(ud.datedoc, INTERVAL ud.periodwatch HOUR )) - UNIX_TIMESTAMP(now()))) AS remained FROM `userauctiondoc` ud

[/sql]
Ага phpMyAdmin - вычисляет на ура, на localhost - редактор MySQL - Front притаком запросе ругается и выдает предупреждение что запрос не корректен и в результате выдаёт null

-~{}~ 15.11.09 18:26:

Автор оригинала: *****
зачем гонять дату в UNIXTIME и обратно?
Для того чтобы получить в секундах, получить разницу в формате Ч:М:C

Вы что предлагаете, если не секрет ?
 

SPavel_74100

Новичок
Автор оригинала: vovanium
SPavel_74100
Тебя уже 2 раза спросили зачем гонять в unixtime, если у тебя даты в datetime хранятся, почитай функции работы с датами MySQL
вот ознакомься
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Почитал. только Rus http://www.mysql.ru/docs/man/Date_and_time_functions.html

у меня после DATE_ADD может получится совсем другая дата, там в ud.periodwatch может и 24, 48, 72 ... часа
UNIX_TIMESTAMP - возврашает секунды сек .(date) + сек(time) поэтому
и -
PHP:
UNIX_TIMESTAMP( DATE_ADD( ud.datedoc, INTERVAL ud.periodwatch HOUR ) ) - UNIX_TIMESTAMP( now( ) ) )
ответ допустим будет 2 деня 4 часа 30 мин 20 сек, - только все в секундах.

Может раз у меня может получится другой день поступать совсем по другому

получать
PHP:
(TO_DAYS(ud.datedoc + INTERVAL ud.periodwatch HOUR) - TO_DAYS(now( ))) * 24
= дни в часах

PHP:
SEC_TO_TIME( TIME_TO_SEC(ud.datedoc + INTERVAL ud.periodwatch HOUR)  - TIME_TO_SEC(now( ))  )
- разница во времени

потом уже с помощью PHP дни в часах + разница во времени = 52:30:20
 

vovanium

Новичок
На mysql.ru очень древние доки. Вот пример который ты мог увидеть по ссылке:
Код:
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001', '2008-12-30 01:01:01.000002');
    -> '46:58:57.999999'
 

SPavel_74100

Новичок
Автор оригинала: vovanium
На mysql.ru очень древние доки. Вот пример который ты мог увидеть по ссылке:
Код:
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001', '2008-12-30 01:01:01.000002');
    -> '46:58:57.999999'
Спасибо.
 
Сверху