2015-01-09 36 views
1

難以從KDB數據庫獲取C程序中的日期和varbinary值。 K(3.2噸2004-06-03)如何在C api中從KDB +獲取日期和varbinary

types: 
date = `date 
col1 = `varbinary 

查詢:

select date, col1 from table1 where date='1993-01-04' 

結果在K殼層:

int date = KI(KK(kData)[0])[i];//date=-15337. 
col1=KI(KK(kData)[1])[i]; //col1=8394164 

問題:用C

.((`date 
,-15337 
.,(`T;`date;)) 
(`col1 
,"000 00010" 
)) 

結果:我如何將-15337轉換爲'1993-01-04'?它在kdb之前... 問題:如何從結果中獲得實際的varbinary「000 00010」?

非常感謝。

+0

時間值是無符號的,所以-15337實際上是(在無符號的十六進制)FFFFC417h。除此之外,這表明32位時間的可用日期將在2036年結束。(我期望時間值在此之前爲64位) – user3629249

+0

數據與可變長度二進制值之間的關係如何00000010? – user3629249

+0

可以通過使用localtime()函數和strftime()函數從0xFFFFC417獲取字符串日期。 – user3629249

回答

1

我已經找到答案,謝謝應對user3629249

訪問日期使用DJ功能

cout << dj(KI(KK(kData)[0])[i]); 

產生19930104

訪問VAR二進制的名單。

K col1Data = KK(KK(kData)[6])[i]; 
int col1_size = col1Data->n; 
for(int j=0; j<col1_size; j++) 
    cout << KC(col1Data)[j]; 

產生 「000 00010」