我有一個龐大的數據庫,其中包括「發佈時間」字段。在Python中排序日期
該字段包含的值,例如:2天前,3個月前,5分鐘前...
我可以排序它其中涉及首先觀察第二個參數(日,月,分艱難地),然後查看數字的第一個參數。
我想知道是否有更好的方法?
我有一個龐大的數據庫,其中包括「發佈時間」字段。在Python中排序日期
該字段包含的值,例如:2天前,3個月前,5分鐘前...
我可以排序它其中涉及首先觀察第二個參數(日,月,分艱難地),然後查看數字的第一個參數。
我想知道是否有更好的方法?
正如其中一條評論所述,請重新考慮更改數據庫結構(或至少本專欄)。只要你可以將它與某個固定的時間點聯繫起來(這意味着 - 你有某種'絕對'價值,比如紀元時間),比較日期的整點就是有意義的。
如果你不能夠在數據庫設計工作,或有用於該模式的一些不起眼的目的,你已經可以查詢現有的PIP封裝:
https://pypi.python.org/pypi/dateparser
從包文檔:
功能
- 對英語,西班牙語,荷蘭語,俄語和20多個日期的通用分析其他語言加上衆多格式,語言 不可知論的時尚。
- 通用解析相對日期,如'1分鐘前','2周前','3個月,1周和1天前','2天內','明天'。
日期的通用解析與時區縮寫或類似UTC偏移: '2015年8月14日美國東部時間', '2013年7月4日太平洋標準時間','21月
2013晚上10:15 0500' 。支持非格里曆日曆系統。請參閱支持的日曆。
- 廣泛的測試覆蓋率。
這是一個非常好的答案。我特別喜歡你如何強調日期應該是絕對的,如果可以幫助的話,但至少提供一個轉換相對日期的機會。 – mike
聽起來不錯,我會看看這個包。這個值「x時間前」是以字符串的形式給出的,因此就數據庫而言我沒有太多可以做的事情。謝謝 –
這些模糊值「xy's ago」顯然是從一些原始源數據計算得到的顯示值。 您是否從某些API採購這些數據?
您應該嘗試將這些顯示值背後的原始數據源。也許你從這些記錄中獲取這些記錄的「龐大數據庫」可以以返回日期絕對值的方式查詢,而不是這些模糊的數據庫。 (作爲旁白,我發現目前使用所謂人性化模糊日期戳的趨勢非常煩人,尤其是當您無法關閉它們時,它不僅會影響屏幕抓取應用程序,似乎是,但這對時間關鍵型數據(如帶日期戳記票據的票務系統)來說確實是一個障礙,我期待看到這種UI趨勢的減弱)。
您的巨大數據庫中沒有時間戳列嗎? –
'python'或'sql' ??? – Praveen
您的數據庫包含字符串值「2天前」... ?!從長遠來看,這不是非常有用,是嗎? – deceze