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