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
Arithmetic and logical operations могут быть выполнены прямо на свидании.
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
Как и в случае с датами, арифметика может выполняться непосредственно по времени.
Дата и время
Datetime - это комбинация даты и времени, разделенных буквой «T», как в стандартном формате 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
Базовый дробный дневной счет может быть получен путем преобразования в плавающее.