KDB 创建微秒时间戳
KDB creating microsecond timestamp
我通过
在 KDB 中创建了 ms 精度时间戳
update Ts: Date + Time + MSec from Table
现在我正尝试以微秒级的精度做同样的事情。 n 好像是纳秒精度时间类型
n 8 16 00:00:00.000000000 0Nn timespan Timespan TimeSpan
所以我试过了
select Date + "n"$Time + (1000*USec), Date, Time, USec from Table
但它似乎将 "n" 视为具有毫秒精度并且它添加 (USEC*1000) ms 而不是 ns
2017-07-01T23:59:58.000000 2017-06-23 09:10:02.000 744596
我怎样才能完成这项工作。我还尝试转换为 'p' 但会产生类型错误
KDB 从右到左计算。因此,在您的示例中,它将 1000*Usec 添加到 Time 作为第一个操作,这导致该值被视为毫秒而不是纳秒。如果您将 (1000*USec) 移动到施法时间左侧的时间跨度,它将改为添加纳秒。
q)show Table: ([]Date: .z.D - 1 0; Time: "t"?23:59:59; MSec: 2?1000; USec: 2?1000)
Date Time MSec USec
---------------------------------
2017.06.26 16:04:52.000 652 635
2017.06.27 13:33:25.000 66 108
q)update ts: Date + (1000*USec) + "n"$Time + MSec from Table
Date Time MSec USec ts
---------------------------------------------------------------
2017.06.26 16:04:52.000 652 635 2017.06.26D16:04:52.652635000
2017.06.27 13:33:25.000 66 108 2017.06.27D13:33:25.066108000
我通过
在 KDB 中创建了 ms 精度时间戳update Ts: Date + Time + MSec from Table
现在我正尝试以微秒级的精度做同样的事情。 n 好像是纳秒精度时间类型
n 8 16 00:00:00.000000000 0Nn timespan Timespan TimeSpan
所以我试过了
select Date + "n"$Time + (1000*USec), Date, Time, USec from Table
但它似乎将 "n" 视为具有毫秒精度并且它添加 (USEC*1000) ms 而不是 ns
2017-07-01T23:59:58.000000 2017-06-23 09:10:02.000 744596
我怎样才能完成这项工作。我还尝试转换为 'p' 但会产生类型错误
KDB 从右到左计算。因此,在您的示例中,它将 1000*Usec 添加到 Time 作为第一个操作,这导致该值被视为毫秒而不是纳秒。如果您将 (1000*USec) 移动到施法时间左侧的时间跨度,它将改为添加纳秒。
q)show Table: ([]Date: .z.D - 1 0; Time: "t"?23:59:59; MSec: 2?1000; USec: 2?1000)
Date Time MSec USec
---------------------------------
2017.06.26 16:04:52.000 652 635
2017.06.27 13:33:25.000 66 108
q)update ts: Date + (1000*USec) + "n"$Time + MSec from Table
Date Time MSec USec ts
---------------------------------------------------------------
2017.06.26 16:04:52.000 652 635 2017.06.26D16:04:52.652635000
2017.06.27 13:33:25.000 66 108 2017.06.27D13:33:25.066108000