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
可以通过转换为浮点来获得基础的小数天数。