Страница 1 из 1
расчет времени
Добавлено: 21 июл 2006, 14:23
urban
Подскажите пожалуйста, у меня есть поля типа TIME - intime(11:35) и outtime(12:00), как мне сделать расчет времени,допустим res=outtime-intime=00:35
Заранее благодарен.
Добавлено: 21 июл 2006, 14:38
Dimitry Sibiryakov
Разница времен не является временем. Но если сильно припекло, дели на 10000 и получишь секунды. Потом еще на 60 для минут.
расчет времени
Добавлено: 21 июл 2006, 15:20
urban
Dimitry Sibiryakov писал(а):Разница времен не является временем. Но если сильно припекло, дели на 10000 и получишь секунды. Потом еще на 60 для минут.
еще вопрос такого плана, допустим нужно сложить 23:00+22:00=1дн 21:00, а при таком вот запросе
cast('23:00' as time)+(cast('22:00' as time)-cast('00:00' as time))
в результате я получаю только время=21:00, куда деваются дни?
Добавлено: 21 июл 2006, 15:23
dimitr
сложение времени с интервалом дает время. Про даты озаботься сам
расчет времени
Добавлено: 21 июл 2006, 15:54
urban
конечно спасибо, но буду рад если кто-то может быть всетаки сталкивался с такой проблемой и даст мне подсказку, как учесть дни.
Re: расчет времени
Добавлено: 21 июл 2006, 16:43
stix-s
urban писал(а):конечно спасибо, но буду рад если кто-то может быть всетаки сталкивался с такой проблемой и даст мне подсказку, как учесть дни.
для начала рекомендую сюда:
http://community.borland.com/article/0, ... 86,00.html
а вообще придется ньюансы в клиенте решать, не трогая SQL (ИМХО)
Добавлено: 21 июл 2006, 17:07
kdv
даст мне подсказку, как учесть дни.
никак. длительность надо хранить в integer. в секундах, минутах, в чем угодно. Тогда можно и сумму по этим столбцам считать, и т.п. А TIME - это "метки" времени, а не интервалы.
Добавлено: 21 июл 2006, 17:08
kdv
кстати, статья эта хреновая. Т.е. она хорошая в том смысле, что показывает виды операций над датой и временем, но при таких вычислениях идет сильная погрешность. например, вот это:
Код: Выделить всё
select cast('0:00' as time)+(cast('7/4/02 21:00' as timestamp)-current_timestamp)*24*60*60 from rdb$database
врет на несколько секунд (или больше).
когда откроется курс по типам данных
http://course.ibase.ru/course/category.php?id=3
там будет материал, как считать правильно, включая этот случай. Однако хранение интервалов все равно надо делать в целочисленных типах.