根据修改后的时间戳排序记录?

时间:2012-02-09 10:09:53

标签: ruby-on-rails-3 sorting activerecord scope record

我正在尝试对使用屏幕抓取脚本创建的记录列表进行排序。该脚本为每条记录添加以下样式的日期和时间(时间戳):

13 Jan 14:49

该脚本每15分钟运行一次,但是如果我将排序顺序设置为'time DESC',它就没有意义,因为它列出了如下记录:

13 Jan 14:49
13 Jan 12:32
13 Jan 09:45
08 Feb 01:10
07 Feb 23:31
07 Feb 06:53
06 Feb 23:15

正如你所看到的,它正确地列出了第一个数字(月份的数字形式),但是它将在2月份之后推出。为了增加混乱,它将2月份的最新日期放在2月份的顶部。

有没有更好的方法对它们进行排序,以便它们处于更容易理解的顺序?

1 个答案:

答案 0 :(得分:1)

如果要将值存储在数据库中,只需在创建字段时使用列类型datetime。数据库将该字段视为时间,并按时间顺序对值进行排序。

否则,如果要将值存储在其他位置(例如,在平面文件中),请将格式化的时间转换为unix时间。 Unix时间是一个整数,因此您可以更容易地对它进行排序。

Time.parse("13 Jan 09:45").to_i
# => 1326444300
Time.parse("08 Feb 01:10").to_i
# => 1328659800 

您始终可以将unix时间转换为Time实例。

Time.at(1328659800).to_s
# => "2012-02-08 01:10:00 +0100"