Математические Операции В Субд Interbase

Опубликованно: 12/09/2009 |Комментарии: 0 | Показы: 55 |

Работая с базами данных очень часто приходится иметь дело с данными, представляющими дату или время. Будь то студент, пишущий курсовую работу, или database administrator, разрабатывающий распределенную систему для какого-либо промышленного производства, им в любом случае приходится расчитывать временные интервалы, задержки, продолжительности каких-либо процессов.

В статье рассмотрим различные практические приемы расчетов с использованием типв данных Time и Timestamp.

Начнем мы с простых примеров. Допустим, что мы пишем программу, в которой нам необходимо вычислить количество дней между двумя событиями, дата которых задана в базе данных типом Data или TimeStamp. В этом случае нам придется из одного значения просто вычесть другое. Например

select Current_TimeStamp - cast ('yesterday' as timestamp) from Table1

В результате такого запроса получим значение с плавающей точкой, большее единицы, так как выражение cast ('yesterday' as timestamp) возвращает значение "24:00 вчерашнего дня". Если вычитать значения типа Time, то получим результат в секундах. Например запрос

select current_time - cast('0:00' as time) from Table1

вернет количество секунд после полуночи. Данные примеры очень простые и они не должны вызывать никаких трудностей. А теперь рассмотрим более сложные задачи, когда необходимо узнать, например, временной интервал между двумя значениями даты-времени и получить результат тоже в виде времени, а не в количестве дней или секунд, или когда необходимо вычислить разницу в виде типа Timestamp между двумя датами, или необходимо от типа Date отнять тип Time, или вычислить среднее значение или сумму нескольких значений Time или Timestamp. Будем постепенно отвечать на самые частые вопросы.

Как получить разницу между двумя переменными типа Time в виде переменной типа Time?

Получить интервал между двумя значениями типа Time можно следующим образом. Сначала вычесть из одного значение другое, а потом прибавить результат к «полуночи». Например, чтобы узнать, сколько осталось времени до определенного события, нужно выполнить запрос

select cast('0:00' as time)+(cast('17:00' as time)-current_time) from Table1

Как получить разницу между двумя переменными типа Timestamp в виде переменной типа Time?

Чтобы получить интервал между двумя переменными типа Timestamp нужно вычесть из первого значения второе, умножить результат на количество секунд в дне и добавить результат к полуночи. Следующий пример показывает, сколько времени остается до праздничного салюта (при условии, что сегодня 9 мая).

select cast('0:00' as time) + (cast('5/9/02 21:00' as timestamp) - current_timestamp)*24*60*60 from table1

Как получить разницу типа Timestamp между двумя датами, заданными как Timestamp?

Для решения такой задачи нужно из первого значения типа Timestamp вычесть второе и добавить результат к дате, которую будем считать точкой отсчета. Возьмем, к примеру, за нулевой день 31 декабря 1999 года и рассчитаем время в пути поезда Москва – Владивосток, который отправляется с вокзала Москва Ярославская 11 октября 2008 года в 01:01, а прибывает во Владивосток в 19 октября 2008 года в 13:47. В результате выполнения следующего запроса

select cast('12/31/99' as timestamp) + (cast('10/19/08 13:47' as timestamp) - cast('10/11/08 1:01' as timestamp)) from table1

получим результат 8 дней, 12 часов и 46 минут (от нулевого дня 31 декабря 1999 года в данном случае).

Как вычесть или прибавить переменную типа Time к дате, заданной как переменная типа Timestamp?

Чтобы решить эту задачу, необходимо вычесть «полночь» из времени типа Time, а затем результат вычесть или прибавить к дате, заданной как Timestamp. Следующий пример рассчитывает, сколько будет времени через 2 часа.

select current_timestamp + (cast('2:00' as time) - cast('0:00' as time))/(60*60*24) from table1;

Как отнимать или добавлять части суток к переменной типа Timestamp?

Нужно просто прибавить или отнять от переменной типа Timestamp количество секунд. Этот пример показывает, какая будет дата и время через 2 часа.

select current_timestamp + (2.0 / 24.0) from table1

Как вычитать и прибавлять комбинации дата-время?

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

select current_date + current_time - 1 from table1;

Как рассчитать среднее значение или сумму столбца, содержащего время?

Для начала необходимо создать поле типа Time, содержащее количество секунд после полуночи, а затем вычислить среднее или сумму этого столбца и прибавить получившийся результат к полуночи.

select cast('0:00' as time) + avg(seconds) from times

Нажмите здесь, чтобы опубликовать эту статью на своем сайте или блоге, это бесплатно и просто!
Источник статьи: http://www.rusarticles.com/kursi-statya/matematicheskie-operacii-v-subd-interbase-1224921.html

Метки:

interbase

,

базы данных

,

timestamp

,

time

,

date

Как становятся сеошниками сегодня? Конечно, в институте этому не учат. Есть несколько путей стать специалистом по раскрутке и оптимизации сайтов. Это курсы сео, самостоятельное изучение, практика на работе.

От: Raisal Образование> Курсыl 03/09/2011

В этой заметке нам бы хотелось дать ответ на самый животрепещущий вопрос для WEB-специалистов при обсуждении оплаты за проекты: сколько я буду получать, работая вместе с Вами?

От: Raisal Образование> Курсыl 03/09/2011

В Киеве пока мало курсов по SEO/СЕО раскрутке и оптимизации сайтов. И даже не каждый будущий сеошник задумывается, что они существуют. И как ни странно, не все курсы СЕО всплывают в Google Top-10.

От: Raisal Образование> Курсыl 03/09/2011

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

От: Юлияl Образование> Курсыl 01/09/2011

Статья поможет студентам технических специальностей при заполнении карт технологического процесса при разработке курсовых и дипломных проектов

От: сергейl Образование> Курсыl 31/08/2011

Как пользоваться информацией для обучения бизнесу в интернете. Только проверенные и реально приносящие доход ссылки и программы.

От: Ольгаl Образование> Курсыl 07/08/2011

Что из себя представляет видимая перспектива? Это явление окружает нас повсюду. Многие художники используют законы перспективы. В результате влияния этого явления перспективы форма предметов искажается в пространстве. Тема достаточно сложная и интересная.

От: egorchl Образование> Курсыl 30/06/2011 lПоказы: 12

Как утверждал великий немецкий поэт и мыслитель Гёте: «Человек проживает столько жизней, сколько языков он знает». И теперь, с теми возможностями, что мы имеем, это выражение становится как никогда актуальным.

От: Юлияl Образование> Курсыl 15/06/2011

Автоматизация решения экстремальных задач линейного программирования. Симплекс-метод и Метод Гомори.

От: Vladimirl Образование> Научные исследованияl 22/01/2009 lПоказы: 722

В статье описывается процесс поиска базовых станций операторов сотовой связи и регистрация их технических параметров с использованием телефона Pantech Curitel 550

От: Vladimirl Коммуникации> Мобильная связьl 17/01/2009 lПоказы: 273

Добавить новый комментарий

 
* Необходимые поля
Блок автора
Категории статей
Все категории
Quantcast