我有一个庞大的数据库,其中包含一个“发布时间”字段。
此字段包含的值包括:2天前,3个月前,5分钟前...
我可以用艰难的方式对其进行排序,首先查看第二个参数(日,月,分钟),然后查看第一个参数,即数字。
我想知道是否有更好(更容易)的方式?
答案 0 :(得分:4)
如其中一条评论中所述,重新考虑更改数据库结构(或至少是此列)。只要你可以将它与某个固定的时间点相关联(这意味着 - 你有某种'绝对'值,如纪元时间),比较日期的整个点是有意义的。
如果您无法处理数据库设计或该架构存在一些模糊的目的,您可以检查现有的PIP包:
https://pypi.python.org/pypi/dateparser
来自包文档:
功能
- 使用英语,西班牙语,荷兰语,俄语和20多种其他语言以及语言中的多种格式对日期进行一般解析 不可知论的时尚。
- 通用解析相关日期,例如:'1分钟前','2周前','3个月,1周和1天前','2天','明天'。
使用时区缩写或UTC偏移量的日期的一般解析,例如:'2015年8月14日美国东部时间','2013年7月4日太平洋标准时间','7月21日 2013年10:15 pm +0500'。
支持非公历日历系统。请参阅支持的日历。
- 广泛的测试覆盖率。
答案 1 :(得分:1)
这些模糊的价值" x y'之前"清楚地显示从一些原始源数据计算的显示值。 您是从某些API获取这些数据吗?
您应该尝试获取这些显示值背后的原始数据。可能是"庞大的数据库"您从这些记录中获取这些记录的方式可以返回日期的绝对值,而不是这些模糊的记录。
(顺便说一句,我发现目前使用所谓的人性化模糊日期戳的趋势非常烦人,特别是当你无法关闭它们时。它不仅会影响屏幕抓取应用程序,这似乎是,但它确实是时间关键数据的障碍,例如带有日期戳记票据的票务系统。我期待看到这种UI趋势减弱。)