Математически операции в Subd Interbase
Когато работите с бази данни, често трябва да работите с данни, които представляват дати или часове. Независимо дали става въпрос за студент, който пише курсова работа, или администратор на база данни, разработващ разпределена система за някакъв вид индустриално производство, те във всеки случай трябва да изчислят времеви интервали, закъснения и продължителност на всички процеси.
В тази статия ще разгледаме различни практически техники за изчисление с помощта на типовете данни Time и Timestamp.
Ще започнем с прости примери. Да кажем, че пишем програма, в която трябва да изчислим броя на дните между две събития, чиято дата е дадена в базата данни като тип Data или TimeStamp. В този случай ще трябва просто да извадим другата от една стойност. Например
изберете Current_TimeStamp - предаване ('вчера' като времево клеймо) от Таблица1
В резултат на такава заявка ще получим стойност с плаваща запетая, по-голяма от единица, тъй като изразът cast ('вчера' като клеймо за време) връща стойността "24:00 вчера". Ако извадим стойности от типа Time, получаваме резултата в секунди. Например заявка
изберете current_time - cast('0:00' като време) от Table1
ще върне броя секунди след полунощ. Тези примери са много прости и не би трябвало да създават затруднения. А сега нека разгледаме по-сложни задачи, когато е необходимо да се установи, например, интервалът от време между две стойности за дата-час и да се получи резултатът също под формата на време, а не като брой дни или секунди, или когато е необходимо да се изчисли разликата във формата на типа Timestamp между две дати, или е необходимо да се извади типът Time от типа Date, или да се изчисли средната стойност или сумата от няколко стойности на Time или Timestamp. Постепенно ще отговорим на най-често задаваните въпроси.
Как да получите разликатамежду две променливи от тип Time като променлива от тип Time?
Можете да получите интервала между две стойности от тип Time, както следва. Първо извадете другата стойност от една и след това добавете резултата към „полунощ“. Например, за да разберете колко време остава до определено събитие, трябва да изпълните заявката
изберете cast('0:00' като време)+(cast('17:00' като време)-current_time) от Table1
Как да получа разликата между две променливи Timestamp като времева променлива?
За да получите интервала между две променливи на Timestamp, извадете втората стойност от първата стойност, умножете резултата по броя секунди в деня и добавете резултата към полунощ. Следващият пример показва колко време остава до фойерверките (ако приемем, че днес е 9 май).
изберете cast('0:00' като време) + (cast('5/9/02 21:00' като timestamp) - current_timestamp)*24*60*60 от table1
Как да получа разликата в типа Timestamp между две дати, дадени като Timestamp?
изберете cast('12/31/99' като времево клеймо) + (cast('10/19/08 13:47' като времево клеймо) - cast('10/11/08 1:01' като времево клеймо)) от таблица1
Как да извадите или добавите променлива от тип Time към дата, дадена като променлива от тип Timestamp?
За да разрешите този проблем, трябва да извадите „полунощ“ от часа на тип Time и след това да извадите или добавите резултата към датата, дадена като Timestamp. Следващият пример изчислява колко часа ще бъде след 2 часа.
изберете current_timestamp + (cast('2:00' като време) - cast('0:00' като време))/(60*60*24) от table1;
Как да извадите или добавите части от деня към променлива тип Timestamp?
Просто трябва да добавите или извадите броя секунди от променливата Timestamp. Този пример показва какви ще бъдат датата и часътСлед 2 часа.
изберете current_timestamp + (2.0 / 24.0) от table1
Как да изваждам и добавям комбинации от дата-час?
Когато датата и часът се добавят заедно, резултатът се представя като тип времево клеймо и след това може да се манипулира както обикновено. Примерът показва коя дата и час е било вчера.
изберете текуща_дата + текущо_време - 1 от таблица1;
Как да изчисля средната стойност или сумата на колона, съдържаща време?
Първо трябва да създадете поле от тип Time, съдържащо броя секунди след полунощ, след което да изчислите средната стойност или сумата от тази колона и да добавите получения резултат към полунощ.
изберете cast('0:00' като време) + ср.(секунди) от пъти