pymongo在讀寫dataframe時自動的相差8個小時
- dataframe資料集預覽
Python讀取mongodb采坑記錄 - 檢視一下資料的類型
Python讀取mongodb采坑記錄
可以看到,collect_time的資料類型是datetime64
- 寫入mongodb
connections.insert(json.loads(data_final.T.to_json()).values())
- 檢視資料庫 通過對比我們發現,當将 datetime64的資料存入mongodb時,時間會自動的增加8小時
Python讀取mongodb采坑記錄 - 讀取資料
Python讀取mongodb采坑記錄
可以看到,讀出來之後所有的時間都少了8小時
總結:MongoDB存儲時間類型資料時,都是先轉換為UTC時間,然後存儲到資料庫中,如果将本地時間存入到MongoDB資料庫時,将本地時間減去8小時(用到了datetime.timedelta子產品),
import datetime即:datetime.datetime.now()-datetime.timedelta(hours=8), 相反, 擷取MongoDB資料庫存入的時間資料,需要加8小時
即:data[‘updata_time’]+datetime.timedelta(hours=8)
原因已找到:
pd.to_datetime()将時間戳轉化為日期時是沒有時區資訊的,即pd.to_datetime()認為時間戳是UTC時間,故此操作中為了顯示本地時間可以手動增加8小時
參考:
https://huangzhw.github.io/2017/10/22/mongodb-date/