Q 语言 - 时态数据


q语言有许多不同的方式来表示和操作时间数据,例如时间和日期。

日期

kdb+ 中的日期在内部存储为自我们的参考日期为 2000 年 1 月 1 日以来的整数天数。该日期之后的日期在内部存储为正数,而在此日期之前的日期被引用为负数。

默认情况下,日期以“YYYY.MM.DD”格式写入

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

2000 年 1 月 1 日是星期六。因此,历史上或将来的任何星期六除以 7 时都会产生余数 0,星期日产生 1,星期一产生 2。

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

时代

时间在内部存储为自午夜钟声敲响以来的整数毫秒数。时间以 HH:MM:SS.MSS 格式写入

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

与日期一样,可以直接对时间进行算术运算。

日期时间

日期时间是日期和时间的组合,按照 ISO 标准格式以“T”分隔。日期时间值存储从 2000 年 1 月 1 日午夜开始的小数天数。

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

可以通过转换为浮点来获得基础的小数天数。