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

Опубликованно: 12/09/2009 | Комментарии: 0 | Просмотры: 12
document.write(unescape("%3Cscript src='http://js.articlesbase.com/gads/gads-topD.js?v=2.0011' type='text/javascript'%3E%3C/script%3E"));

Работая с базами данных очень часто приходится иметь дело с данными, представляющими дату или время. Будь то студент, пишущий курсовую работу, или 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

(RusArticles SC #1224921)

Оценить
  • 1
  • 2
  • 3
  • 4
  • 5
  • 0 голос(ов)

    Источник статьи: http://www.rusarticles.com/kompyuternye-kursy-statya/matematicheskie-operacii-v-subd-interbase-1224921.html

    Тэги статьи:

    time

    ,

    date

    ,

    interbase

    ,

    базы данных

    ,

    timestamp

    Существуют различные учебные центры для бухгалтеров. Главное при выборе обучающего курса - это качество знаний. Что касается обучению программам «1С» то нужно искать курсы 1С у тех, кто эту программу создал и учит в ней работать – а это Центры Сертифицированного Обучения 1С (ЦСО).

    От: Гульнараl Компьютеры> Компьютерные курсыl 17/05/2010 lПросмотры: 1

    Знакомство с фотошопом,установкой,загрузкой инструментов,очень легкие и быстродоступные изменение на фотографии

    От: tarelka1961l Компьютеры> Компьютерные курсыl 30/03/2010 lПросмотры: 42

    Несколько лет присутствия на рынке России и стран СНГ сделали книжные сканеры ATIZ крайне популярными среди профессионалов по сканированию, будь то небольшие ВУЗовские библиотеки или государственные учреждения. В чем причина их популярности? В ценовой политике ATIZ Innovation?

    От: V_I_G_Ol Компьютеры> Компьютерные курсыl 09/03/2010 lПросмотры: 14
    Кузьменко Андрей

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

    От: Кузьменко Андрейl Компьютеры> Компьютерные курсыl 04/02/2010 lПросмотры: 84

    Тут показана работа с инструментом кривые Безье. Отрисовка вектора показана на примере машины Audi TT. Это сложная тема для начинающих дизайнеров.

    От: egorchl Компьютеры> Компьютерные курсыl 30/01/2010 lПросмотры: 79

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

    От: podryvnikl Компьютеры> Компьютерные курсыl 03/01/2010 lПросмотры: 350
    Кузьменко Андрей

    Краткая инструкция "для чайников" о том, как решить проблему со шрифтами, когда на компьютере вместо букв отображаются цифры, вопросы, иероглифы, квадратики и др.

    От: Кузьменко Андрейl Компьютеры> Компьютерные курсыl 14/12/2009 lПросмотры: 476
    Кузьменко Андрей

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

    От: Кузьменко Андрейl Компьютеры> Компьютерные курсыl 10/12/2009 lПросмотры: 226

    Рассматриваются основные приемы работы с типами данных "время" и "дата" в СУБД InterBase. Сложение, вычитание дат и другое.

    От: Vladimirl Компьютеры> Компьютерные курсыl 12/09/2009 lПросмотры: 12

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

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

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

    От: Vladimirl Связь> Сотовые телефоныl 17/01/2009 lПросмотры: 220

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

     
    * Необходимые поля
    Блок автора
    Vladimir
    Vladimir Лучшие 3 статьи онлайн
    Категории статей
    Все категории