Учебники

Q Language — временные данные

В языке q есть много разных способов представления и обработки временных данных, таких как время и дата.

Дата

Дата в kdb + внутренне сохраняется как целое число дней, так как наша справочная дата — 01 января 2000 года. Дата после этой даты внутренне сохраняется как положительное число, а дата до нее упоминается как отрицательное число.

По умолчанию дата записывается в формате «ГГГГ.ММ.ДД»

q)x:2015.01.22      / This is how we write 22nd Jan 2015

q)`int$x            / Number of days since 2000.01.01
5500i

q)`year$x           / Extracting year from the date
2015i

q)x.year            / Another way of extracting year
2015i

q)`mm$x             / Extracting month from the date
1i

q)x.mm              / Another way of extracting month
1i

q)`dd$x             / Extracting day from the date
22i

q)x.dd              / Another way of extracting day
22i

Арифметические и логические операции могут выполняться непосредственно по датам.

q)x+1        / Add one day
2015.01.23

q)x-7        / Subtract 7 days
2015.01.15

1 января 2000 года выпало на субботу. Поэтому любая суббота на протяжении всей истории или в будущем при делении на 7 даст остаток от 0, воскресенье дает 1, понедельник — 2.

             Day               mod 7
           Saturday              0
           Sunday                1
           Monday                2
           Tuesday               3
           Wednesday             4
           Thursday              5
           Friday                6

раз

Время хранится в виде целого числа миллисекунд с момента полуночи. Время записывается в формате ЧЧ: ММ: СС.МСС

q)tt1: 03:30:00.000     / tt1 store the time 03:30 AM

q)tt1
03:30:00.000

q)`int$tt1              / Number of milliseconds in 3.5 hours
12600000i

q)`hh$tt1               / Extract the hour component from time
3i

q)tt1.hh
3i

q)`mm$tt1               / Extract the minute component from time
30i

q)tt1.mm
30i

q)`ss$tt1               / Extract the second component from time
0i

q)tt1.ss
0i

Как и в случае с датами, арифметика может быть выполнена непосредственно по времени.

DateTimes

Дата и время — это комбинация даты и времени, разделенных буквой «Т», как в стандартном формате ISO. Значение datetime хранит дробное число дней с полуночи 1 января 2000 года.

q)dt:2012.12.20T04:54:59:000      / 04:54.59 AM on 20thDec2012

q)type dt
-15h

q)dt
2012.12.20T04:54:59.000
9
q)`float$dt
4737.205

Основной дробный счетчик дней может быть получен путем приведения в плавающее положение.