如何使用Ecto按日期时间对表格进行排序?

时间:2017-12-08 16:15:21

标签: postgresql sorting datetime elixir ecto

此刻我正在撞墙。我正在使用Elixir和Ecto,我有一个数据表和一个Datetime列。

Datetime列如下:

2017-11-16 16:02:01
2017-11-23 09:00:07
2017-11-27 13:19:58
2017-12-05 07:48:42

我想要做的是根据时间而不是日期对此表进行排序。所以结果(ASC)将是:

2017-12-05 07:48:42
2017-11-23 09:00:07
2017-11-27 13:19:58
2017-11-16 16:02:01

你们在ecto有什么想法吗? postgres查询也可能有所帮助!

2 个答案:

答案 0 :(得分:1)

所以我认为这样的事情应该有效:

Post 
|> order_by([p], fragment("?::time", p.inserted_at)) 
|> Repo.all()

这里使用片段来利用PostgreSQL强制转换机制,从日期时间中提取时间部分。我没有测试过,但我想它应该有用。

答案 1 :(得分:0)

如果接受的答案不起作用,请尝试

from(p in Post, order_by: fragment("? DESC", p.inserted_at))