最近在進行離職人員資料分析時,發現在同時篩選離職時間和入職時間選取資料集時,頻頻發生報錯,具體如下:

只要添加**{“company.hiredate”:{"$lt":datetime(2020,1,1,0,0,0,0)}}**條件進行篩選就會報錯,換用其它欄位則不會(如下圖所示),一度以為是自己的代碼寫錯了,仔細檢查并沒有存在邏輯錯誤、語法錯誤,

在查詢離職日期時,就采坑過,因為MongoDB資料存盤格式為Date(253402300799999),在查詢的時候,不可以使用ISODate(“2011-03-15T06:36:36.000Z”)時間型別查詢方法,比如想查詢離職時間為ISODate(“9999-12-31T23:59:59.999Z”),即在職狀態人員,怎么辦?
采用了一個巧的方法,既然在職,離職日期必然不會大于當前時間+1,先獲取當前時間today,然后在此基礎上加1天,作為查詢時間篩選條件的一個變數re_date,
import datetime
today=datetime.datetime.now()#當天時間
offset = datetime.timedelta(days=+1)#增加一天
re_date = today + offset
由此,猜想會不會company.hiredate也可能存在這樣的問題,回到MongoDB發現果然如此,這個欄位的資料格式是不統一的


所以,按同樣的方式來處理,由于需要找到在2019年12月31日之前入職而未離職人員,若依設定時間篩選變數start=datetime.datetime(2020,1, 1, 0, 0, 0, 0),取小于這個入職時間的人員,代碼修改為

這里只展示兩個查詢結果,代表問題解決就可以了

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/128489.html
標籤:AI
下一篇:Mysql系列第十五講 事務詳解
