此刻我正在撞墙。我正在使用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查询也可能有所帮助!
答案 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))