Q语言 - 时间数据(Temporal Data)

优质
小牛编辑
129浏览
2023-12-01

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

Date

kdb +中的日期在内部存储为自我们的参考日期为01Jan2000以来的整数天数。 此日期之后的日期在内部存储为正数,之前的日期作为负数引用。

默认情况下,日期以“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

Arithmetic and logical operations可以直接在日期执行。

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

Times

时间内部存储为自午夜行程以来的整数毫秒数。 时间以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

与日期一样,算术可以直接执行。

Datetimes

日期时间是日期和时间的组合,以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

可以通过转换为浮动来获得基础分数日计数。