2012-10-31 27 views
2

我正在優化一些UniVerse數據訪問代碼,我們使用它的UniObjects代碼。經過一番實驗後,似乎使用UniSession.OConv調用來解析某些東西,如十進制數(大多數我們有MR4或MR2或MR2 $)和日期(幾乎都是D2 /)是非常緩慢的(我認爲它可能會撥打回電話解析它)。UniVerse本機日期格式

我已經爲MR * [$]代碼構建了一個解析器,但我想知道存儲日期,因此我可以爲D2 /構建一個日期。通常他們似乎被存儲爲5位數字。我認爲自從UniVerse服務器在HP-UX上運行以來,它可能是Unix Epoch以來的天數,但在找到'15766'作爲最後修改日期並將其乘以86400(每日秒數)後,我得到了2013年3月2日作爲最後修改日期是沒有意義的,因爲據我所知,這仍然是未來。

有沒有人知道這些日期數字的時間基準是什麼?

回答

2

它存儲爲幾天。只需在0上進行轉換,您將獲得開始日期。

編輯:

正如洛指出,大紀元宇宙(和UniData的)使用的是1967年12月31日

+0

我得到該基地是1967年12月31日。做OConv(「15766」,「D2 /」)和(New DateTime(1967,12,31))。AddDays(15766)給了我同樣的東西。萬分感謝! –

+0

只是爲了給出一些統計數據:將1000個隨機整數轉換爲0到16000之間的日期,對於OConv,每次轉換的平均值爲1.2561ms,對於日期時間加法,每次轉換的平均值爲0.002ms。 –

+0

感謝您的更新洛杉磯,你完全正確。 –

1

在Universe和其他Pick數據庫中,日期和時間存儲爲單獨的值。

內部日期是31/12/1967之前的天數,即第零天。

內部時間是午夜後的秒數。它可以存儲爲十進制數,但通常不會。

0

在TCL有一個CDT命令(表示轉換日期),其將日期從人類可讀到數字和反之亦然:

CDT 9/28/2017 
* Result: 18169 

CDT 18169  
* Result: 09/28/2017