你如何使用 Ecto 按时间对 table 和 datetime 进行排序?

How do you sort a table with datetime by time with Ecto?

我现在正在碰壁。我正在使用 Elixir 和 Ecto,我有一个包含数据的 table 和一个包含日期时间的列。

日期时间栏如下:

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

我想做的是根据时间而不是日期对 table 进行排序。所以结果(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 查询也可能有帮助!

所以我认为这样的事情应该可行:

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

在这里您使用一个片段来利用从日期时间中提取时间部分的 PostgreSQL 转换机制。我还没有测试过,但我想它应该可以工作。

如果已接受的答案无效,请尝试

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