我想使用datetime類型作爲b-tree BerkeleyDB數據庫中的鍵。我的目標:DateTime作爲鍵
-
的時間存儲
- 最小的開銷
- 按日期鍵比較(檢索範圍)
- 合理的速度
如何代表最緊湊的形式和使用默認bsddb的關鍵日期時間比較算法?
難以在C中做到這一點,併爲這些任務創建小型Python擴展?我對C沒有經驗,只能理解小C片段(並複製粘貼它們)。
我想使用datetime類型作爲b-tree BerkeleyDB數據庫中的鍵。我的目標:DateTime作爲鍵
如何代表最緊湊的形式和使用默認bsddb的關鍵日期時間比較算法?
難以在C中做到這一點,併爲這些任務創建小型Python擴展?我對C沒有經驗,只能理解小C片段(並複製粘貼它們)。
您對什麼範圍的日期時間值感興趣?那時候的分辨率是多少?
由於fge在評論中顯示,如果您想在限制爲1902-2037的時間段內使用1秒的分辨率,那麼您可以使用32位有符號整數以及自Unix Epoch 1970年以來的秒數, 01-01 00:00:00 +00:00(1970年1月1日午夜,UTC)。如果您想要更廣泛的範圍,那麼您應該使用相對於Unix Epoch的64位有符號整數。如果你想要亞秒精確度,存儲一個32位有符號整數,它是納秒數。請注意,對於負的時間(1970年以前),小數秒也應該是負數。用於建議這些表示
一個原因是,該值很容易被發現通過標準UNIX(POSIX)接口,諸如time()
1-第二分辨率和clock_gettime()
爲納秒的分辨率或用於gettimeofday()
微秒的分辨率。
您可以存儲Unix紀元,它非常簡單,因爲它只是一個數字 – fge 2012-01-08 23:44:46