2017-06-27 98 views
0

我創建毫秒精度時間戳在KDB通過KDB創建微秒時間戳

update Ts: Date + Time + MSec from Table 

現在我試着用微秒精度相同。 ñ似乎是納秒的精度時類型

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)毫秒,而不是ns

2017-07-01T23:59:58.000000 2017-06-23 09:10:02.000 744596 

我該如何做這項工作。我也嘗試將其轉換爲'p',但這會產生類型錯誤

回答

2

KDB從右到左評估。因此,在您的示例中,它將1000 * Usec添加到Time作爲第一個操作,這會導致將值視爲毫秒而非納秒。如果將(1000 * USec)移至鑄造時間左側的時間範圍內,則會增加納秒。

q)show Table: ([]Date: .z.D - 1 0; Time: "t"$2?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 
+0

啊,我明白了,所以從t到n的演員都是在加法之後發生的。重新排列確實解決了這個問題。謝謝 – chrise